Журнал ошибок декодирования H.264 из потока RTSP

Я получаю следующий журнал ошибок H264. Этот журнал приходит при декодировании видеопотока RTSP с помощью FFMPEG. Отображаемое изображение размывается после 5/6 секунд. Время от времени изображение будет восстанавливаться. Однако в большинстве случаев он остается размытым.

EDIT: Некоторые форумы FFMPEG предложили обновить версию FFMPEG, чтобы избежать этих журналов. Я обновил последнюю сборку FFMPEG от 19 июня 2015 года. Пока журнал остается там, а изображение все еще размыто.

EDIT 2: поток RTSP поступает с камеры GANZ. Эта камера подключается через подключение к локальной сети.

[h264 @ 0abb2aa0] Cannot use next picture in error concealment
[h264 @ 0abb2aa0] concealing 1933 DC, 1933 AC, 1933 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 131 packets
[h264 @ 0abb3300] error while decoding MB 66 25, bytestream (-9)
[h264 @ 0abb3300] Cannot use next picture in error concealment
[h264 @ 0abb3300] concealing 1583 DC, 1583 AC, 1583 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 8 packets
[h264 @ 0b113e40] error while decoding MB 54 30, bytestream (-11)
[h264 @ 0b113e40] Cannot use next picture in error concealment
[h264 @ 0b113e40] concealing 1195 DC, 1195 AC, 1195 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 118 packets
[h264 @ 0ac79960] error while decoding MB 13 20, bytestream (-13)
[h264 @ 0ac79960] Cannot use next picture in error concealment
[h264 @ 0ac79960] concealing 2036 DC, 2036 AC, 2036 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 198 packets
[h264 @ 0ad4f500] error while decoding MB 21 9, bytestream (-5)
[h264 @ 0ad4f500] Cannot use next picture in error concealment
[h264 @ 0ad4f500] concealing 2908 DC, 2908 AC, 2908 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 108 packets
[h264 @ 0abb3300] error while decoding MB 1 14, bytestream (-5)
[h264 @ 0abb3300] Cannot use next picture in error concealment
[h264 @ 0abb3300] concealing 2528 DC, 2528 AC, 2528 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 106 packets
[h264 @ 0b1149c0] error while decoding MB 12 5, bytestream (-7)
[h264 @ 0b1149c0] Cannot use next picture in error concealment
[h264 @ 0b1149c0] concealing 3237 DC, 3237 AC, 3237 MV errors in P frame
[h264 @ 098e5c80] RTP: missed -65402 packets
[h264 @ 0b1155a0] error while decoding MB 50 38, bytestream (-7)
[h264 @ 0b1155a0] Cannot use next picture in error concealment
[h264 @ 0b1155a0] concealing 559 DC, 559 AC, 559 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 150 packets
[h264 @ 0af65740] error while decoding MB 48 31, bytestream (-15)
[h264 @ 0af65740] Cannot use next picture in error concealment
[h264 @ 0af65740] concealing 1121 DC, 1121 AC, 1121 MV errors in P frame
[h264 @ 098e5c80] RTP: missed 4 packets
[h264 @ 0ac79960] error while decoding MB 35 38, bytestream (-41)
[h264 @ 0ac79960] Cannot use next picture in error concealment
[h264 @ 0ac79960] concealing 574 DC, 574 AC, 574 MV errors in P frame

Я сбросил поток RTSP в AVI файл, используя ffmpeg, и ошибок нет. C:\Users\Matlab > ffmpeg -i rtsp://192.168.1.67/gnz_media/main 123.avi

Ошибок декодирования H.264 нет. Может ли кто-нибудь помочь с превышением ошибок декодирования с помощью ffmpeg api.

Ответ 1

Если вы используете UDP, вы можете ожидать, что кадры будут отброшены - это часть конструкции UDP, которая предпочитает скорость над надежностью. Отсутствие пакетов является серьезной проблемой для формата H264, поскольку данный пакет может зависеть от пакетов впереди или позади него (использование разностного изображения вместо отправки полного нового изображения). Таким образом, использование UDP приведет к множеству ошибок, включая "RTP: пропущенные XXX пакеты".

Переключитесь на более надежный, но более медленный TCP, передав rtsp_transport="tcp" в av_open_input. Пример:

AVDictionary * opts = NULL;
av_dict_set(&opts, "rtsp_transport", "tcp", 0);
int error = avformat_open_input(&rtsp_format_context, "rtsp://your url here", NULL, &opts);
if (error < 0)
    ; // Connection error. Add your error handling here.

Это остановит потерю пакетов, что устранит искажение видео.

Ответ 2

Эта проблема генерируется камерой, поэтому обновляйте последнюю версию прошивки камеры технической поддержкой GANZ. Это сжатие видео h.264 не поддерживается камерой.