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

Вопрос или проблема

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

ИЗМЕНЕНИЕ: Некоторые форумы обсуждения FFMPEG предложили обновить версию FFMPEG, чтобы избежать этих логов. Я обновил до последней сборки FFMPEG от 19 июня 2015 года. Лог остается, и изображение по-прежнему размыто.

[h264 @ 0abb2aa0] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0abb2aa0] скрытие 1933 ошибок DC, 1933 ошибок AC, 1933 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 131 пакетов
[h264 @ 0abb3300] ошибка при декодировании MB 66 25, байтовый поток (-9)
[h264 @ 0abb3300] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0abb3300] скрытие 1583 ошибок DC, 1583 ошибок AC, 1583 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 8 пакетов
[h264 @ 0b113e40] ошибка при декодировании MB 54 30, байтовый поток (-11)
[h264 @ 0b113e40] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0b113e40] скрытие 1195 ошибок DC, 1195 ошибок AC, 1195 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 118 пакетов
[h264 @ 0ac79960] ошибка при декодировании MB 13 20, байтовый поток (-13)
[h264 @ 0ac79960] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0ac79960] скрытие 2036 ошибок DC, 2036 ошибок AC, 2036 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 198 пакетов
[h264 @ 0ad4f500] ошибка при декодировании MB 21 9, байтовый поток (-5)
[h264 @ 0ad4f500] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0ad4f500] скрытие 2908 ошибок DC, 2908 ошибок AC, 2908 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 108 пакетов
[h264 @ 0abb3300] ошибка при декодировании MB 1 14, байтовый поток (-5)
[h264 @ 0abb3300] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0abb3300] скрытие 2528 ошибок DC, 2528 ошибок AC, 2528 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 106 пакетов
[h264 @ 0b1149c0] ошибка при декодировании MB 12 5, байтовый поток (-7)
[h264 @ 0b1149c0] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0b1149c0] скрытие 3237 ошибок DC, 3237 ошибок AC, 3237 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено -65402 пакетов
[h264 @ 0b1155a0] ошибка при декодировании MB 50 38, байтовый поток (-7)
[h264 @ 0b1155a0] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0b1155a0] скрытие 559 ошибок DC, 559 ошибок AC, 559 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 150 пакетов
[h264 @ 0af65740] ошибка при декодировании MB 48 31, байтовый поток (-15)
[h264 @ 0af65740] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0af65740] скрытие 1121 ошибок DC, 1121 ошибок AC, 1121 ошибок MV в P-кадре
[h264 @ 098e5c80] RTP: пропущено 4 пакета
[h264 @ 0ac79960] ошибка при декодировании MB 35 38, байтовый поток (-41)
[h264 @ 0ac79960] Невозможно использовать следующее изображение в скрытии ошибок
[h264 @ 0ac79960] скрытие 574 ошибок DC, 574 ошибок AC, 574 ошибок MV в P-кадре

ИЗМЕНЕНИЕ: Я сбросил RTSP поток в файл avi с помощью ffmpeg, и ошибок нет.
C:\Users\Matlab>ffmpeg -i rtsp://192.168.1.67/gnz_media/main 123.avi

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

Что вы пытаетесь достичь в первую очередь?

Мой догадка заключается в том, что вы забыли указать, какие кодеки использует ffmpeg на потоке после декодирования. Он перекодирует любой ввод с помощью libx264 по умолчанию, и это слишком медленно для вашего компьютера => вы пропускаете кадры из ввода.

При указании файла avi ffmpeg будет использовать mpeg4 в качестве кодека по умолчанию, что намного быстрее, чем libx264, поэтому, вероятно, вы не пропустили ни одного кадра в этот раз.

Попробуйте следующее:

ffmpeg -i rtsp://192.168.1.67/gnz_media/main -c copy out.mp4

Ответ или решение

Ошибки декодирования H.264 из RTSP потока: анализ и рекомендации

Если вы сталкиваетесь с проблемами декодирования H.264 при работе с RTSP потоком в FFMPEG, и ваше изображение стало размытым, это может указывать на несколько факторов, включая потерю пакетов и ошибки кодирования. Рассмотрим возможные причины и решения данной проблемы.

Проблемы в логах

Ваши логи декодирования показывают следующие ключевые проблемы:

  • Пропуски пакетов RTP: Сообщение о пропусках пакетов (например, missed 131 packets) указывает на то, что ваш поток не получает все необходимые данные в реальном времени. Это может быть вызвано сетевыми проблемами или перегрузкой в сети.
  • Ошибки декодирования по байтовым потокам: Например, ошибки с идентификатором bytestream (-9) свидетельствуют о том, что декодер не может корректно обработать некоторые фреймы.
  • Целостность данных: Сообщения о "concealing" ошибок (например, concealing 1933 DC, 1933 AC, 1933 MV errors in P frame) указывают на то, что декодер пытается скрыть ошибки, использовав временные данные, но в итоге это приводит к размытию изображения.

Возможные причины

  1. Проблемы с сетью: Убедитесь, что скорость передачи данных в сети удовлетворяет требованиям вашего RTSP потока. Если доступ к потоку производится через Wi-Fi, попробуйте подключиться по кабелю для устранения возможных задержек или потерь пакетов.

  2. Параметры кодирования: Как было упомянуто в обсуждении, по умолчанию FFMPEG может использовать libx264 для кодирования, что может быть слишком требовательным для вашего оборудования. Это потенциально может быть причиной потери кадров из-за недостаточной производительности.

  3. Обновление FFMPEG: Несмотря на то что вы обновили FFMPEG до новой версии, возможно, стоит проверить исправления ошибок или обновления в более поздних версиях, если они доступны.

Рекомендуемые решения

  1. Использование -c copy: Прикопируйте поток без перекодирования, это снизит нагрузку на CPU и поможет избежать потерь кадров. Попробуйте следующую команду:

    ffmpeg -i rtsp://192.168.1.67/gnz_media/main -c copy out.mp4
  2. Настройка параметров потока: Попробуйте изменить параметры командной строки, чтобы увеличить буферизацию:

    ffmpeg -i rtsp://192.168.1.67/gnz_media/main -rtsp_transport tcp -c copy out.mp4

    Использование TCP может помочь снизить количество потерянных пакетов по сравнению с UDP.

  3. Анализ потока: Поскольку вы упомянули, что проблем с AVI файлом нет, возможно, сходите по такому пути, используя более устойчивые форматирование или плееры, которые могут лучше обрабатывать поток и показывать результаты.

  4. Мониторинг сети: Проверьте использование сетевого трафика в момент передавания потока — возможно, другие приложения используют пропускную способность.

Заключение

Ошибки декодирования H.264 при работе с RTSP потоками могут иметь разнообразные причины. Первостепенным шагом будет изучение и оптимизация сетевого соединения, а также использование правильных параметров кодирования в FFMPEG. Попробуйте предложенные решения и, если проблемы не исчезнут, возможно, стоит рассмотреть использование специального оборудования для потокового видео.

Оцените материал
Добавить комментарий

Капча загружается...