2013-02-21 3 views
28

Я получаю следующие ошибки при декодировании кадров H.264, полученных с удаленного конца видеовызова SIP на основе H.264. Оцените любую помощь в понимании ошибок.ошибки при декодировании кадров H.264 с использованием ffmpeg

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

ответ

24

Это означает, что ffmpeg еще не видел ключевой кадр, который передает информацию SPS и PPS. SPS и PPS имеют решающее значение для декодирования входящего кадра/среза. Ключевые кадры отправляются периодически (то есть каждые 5-10 секунд или более); так что если окажется, что вы присоединились к потоку до появления ключевого кадра; вы увидите это предупреждение для каждого кадра, пока не появится ключевой кадр.

Как только ключевой кадр появляется из провода, у ffmpeg будет достаточно информации для декодирования этого кадра (и любых последующих кадров до следующего ключевого кадра), чтобы эти предупреждения исчезли.

+0

Это, кажется, проблема. Удаленный конец не отправляет ключевой кадр, даже когда мой клиент запрашивает его, используя SIP INFO. Любые идеи, как это можно решить? Я использую старую версию Bria на удаленном конце. –

+0

Удаленная сторона не отправляет никаких ключевых кадров? Это очень странно. Не уверен, что у Bria есть возможность настроить интервал ключевого кадра, но стоит посмотреть. В общем, вы вообще не видите видео с удаленной стороны, или это занимает некоторое время, чтобы увидеть его? – Aki

+0

Нет видео вообще –

2

Для декодирования кадра или кусочек, sliceHeader декодируется, который относится к PPS или «Picture набора параметров». Он имеет информацию о специфике рамы, такой как ширина, высота и т. Д.

Я думаю, что ваши данные проходят через потоковый входной канал, и в этом случае SPS и PPS были бы отправлены ранее в потоке.

Возможно, вам придется объединить то же самое с вашим потоком.

2

Вам необходимо добавить рамы sps и pps информация. ffmpeg нуждается в этой информации для декодирования. Эти значения можно найти в SDP-файле.

В SDP файл, вы должны смотреть блоки NAL, вы можете увидеть что-то вроде того, что z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg

этих значений based64 закодированных вы должны преобразовать его в шестнадцатеричном формате. Я использую wirehark, и wirehark преобразует эти значения для вас. После этого вы получите значения sps и pps.

Теперь вы должны добавить эти данные Nal перед фреймом данных.

00 00 00 01 00 00 СФС 00 01 имп 00 00 00 01 данных

для h264 их формата я использую для декодирования.

Смежные вопросы