Зеленый экран при потоковой передаче по сети с GStreamer на iMX8

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

Я пытаюсь реализовать сетевой поток с Raspberry Pi на платформу iMX8, используя плагины NXP VPU для декодирования потока, но на стороне NXP отображается зеленый экран со следующим выводом:

gst-launch-1.0 tcpclientsrc host=192.168.178.64 port=5004  ! queue ! h264parse ! vpudec ! videoconvert ! fpsdisplaysink sync=false
Установка конвейера в состояние PAUSED ...
====== VPUDEC: 4.7.2 сборка от 1 сентября 2022 года 09:49:28. ======
        обертка: 3.0.0 (VPUWRAPPER_ARM64_LINUX сборка от 31 августа 2022 года 01:28:14)
        vpulib: 1.1.1
        прошивка: 1.1.1.65535
Конвейер в стадии PREROLLING ...
Конвейер подготовлен ...
Установка конвейера в состояние PLAYING ...
Перераспределение задержки...
Новые часы: GstSystemClock
ОШИБКА: cabac_init_idc
ОШИБКА: SLICE_HEADER
ОШИБКА: disable_deblocking_filter_idc

Я использую следующие конвейеры:

Raspberry Pi (Отправитель)

gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! videoconvert ! x264enc tune=zerolatency byte-stream=true bitrate=500 threads=2 ! mpegtsmux ! tcpserversink host=0.0.0.0 port=5004

iMX8 (Получатель)

gst-launch-1.0 tcpclientsrc host=<IP Отправителя> port=5004 ! queue ! h264parse ! vpudec ! imxvideoconvert_g2d ! fpsdisplaysink sync=false

Что означает эта ошибка и как я могу ее исправить?

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

Ошибка, которую вы видите, указывает на проблемы с декодированием потока H.264 на стороне iMX8. Скорее всего, это связано с несоответствием кодирования или параметрами, используемыми на стороне отправителя (Raspberry Pi). Давайте рассмотрим, как можно диагностировать и решить эту проблему.

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

  1. Проблемы с кодированием видео: Убедитесь, что параметры кодирования на Raspberry Pi правильно соответствуют требованиям декодирования на iMX8.

  2. Проблемы с сетью: Убедитесь, что между устройствами нет потерь пакетов или задержек, мешающих корректному потоку данных.

  3. Настройки формата: Проверьте, что вы используете правильные форматы и разрешения как на стороне отправителя, так и на стороне приемника.

Шаги для решения проблемы

  1. Проверка параметров кодирования на Raspberry Pi:
    Попробуйте использовать следующие параметры для кодирования:

    gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! videoconvert ! x264enc tune=zerolatency byte-stream=true bitrate=500 ! mpegtsmux ! tcpserversink host=0.0.0.0 port=5004

    Убедитесь, что x264enc настроен на использование совместимого профиля и уровня для декодирования iMX8.

  2. Изменение параметров на iMX8:
    Замените vpudec на avdec_h264 для тестирования:

    gst-launch-1.0 tcpclientsrc host=<IP Sender> port=5004 ! queue ! h264parse ! avdec_h264 ! videoconvert ! fpsdisplaysink sync=false

    Это поможет выяснить, действительно ли проблема в vpudec.

  3. Убедитесь в совместимости кодеков:
    Проверьте версию и совместимость установленных кодеков на iMX8. Убедитесь, что все необходимые плагином для GStreamer установлены и обновлены до последних версий.

  4. Проверка сетевых соединений:
    Используйте инструменты вроде ping и iperf для диагностики сетевого соединения. Убедитесь, что нет потерь пакетов и нет проблем с задержками.

  5. Логирование и диагностика:
    Запустите GStreamer с более высоким уровнем логирования, чтобы получить более детализированную информацию об ошибках. Например, можно добавить GST_DEBUG:

    GST_DEBUG=3 gst-launch-1.0 tcpclientsrc host=<IP Sender> port=5004 ! queue ! h264parse ! vpudec ! fpsdisplaysink sync=false

Заключение

Ошибки cabac_init_idc, SLICE_HEADER и disable_deblocking_filter_idc могут быть вызваны неправильными параметрами кодирования или несоответствием версий декодеров. Попробуйте следовать рекомендациям, описанным выше, чтобы диагностировать и исправить проблему с декодированием на вашем iMX8. Если проблема сохранится, возможно, имеет смысл обратиться к документации NXP или на специализированные форумы сообщества для дальнейшей помощи.

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

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