Почему мое приложение не может декодировать поток RTSP?

Я использую live555 для получения видеокадра RTP (кадр, закодированный в H264). Я использую Live555, открываю свой локальный файл .sdp для получения данных кадра. Я только что видел, что DummySink::afterGettingFrame вызывается непрерывно. Если fReceiveBuffer в DummySink правильный, почему FFMPEG не может декодировать кадр? Мой код неверен?

Вот мой фрагмент кода: http://paste.ubuntu.com/12529740/

функция avcodec_decode_video2 всегда возвращает ошибку, ее значение меньше нуля

fReceiveBuffer присутствует один видеокадр?

О, вот мой код инициализации FFMPEG, необходимый для открытия связанного видеодекодера: http://paste.ubuntu.com/12529760/


person MathxH Chen    schedule 23.09.2015    source источник
comment
Пожалуйста, спросите, чтобы ваш вопрос был более понятным. Опишите, что вы уже пробовали. Сделайте подход понятным для нас.   -  person Sebastian Annies    schedule 24.09.2015
comment
@SebastianAnnies Наконец-то я нашел решение вопроса. Спасибо, что напомнили мне об этом   -  person MathxH Chen    schedule 25.09.2015


Ответы (1)


Я снова прочитал документ, связанный с H264, и обнаружил, что I-кадр (IDR) требует SPS/PPS, разделенных вставкой 0x00000001 в заголовок, и декодер имеет возможность правильно декодировать кадр. Вот связанное решение FFmpeg не может декодировать данные потока/кадра H264

Декодирование кадров h264 из потока RTP

и теперь My App работает нормально, оно может декодировать кадр и преобразовывать его в изображение OSD для отображения на экране.

person MathxH Chen    schedule 25.09.2015