Ошибка rtsp Gstreamer

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

Я хочу получить видеопоток ip-камеры с помощью gstreamer:
gst-launch-1.0 rtspsrc location=rtsp://user:[email protected]:554/live/ch00_0 ! rtph264depay ! autovideosink

но получаю эту ошибку
Установка конвейера в состояние PAUSED…
Конвейер работает и не требует состояния PREROLL…
Установка конвейера в состояние PLAYING…
New clock: GstSystemClock
ОШИБКА: из элемента /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Внутренняя ошибка потока данных.
Дополнительная отладочная информация:
gstrtspsrc.c(4206): gst_rtspsrc_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
задача потока приостановлена, причина: не соглашение (-4)
Выполнение завершено после 54503440 нс.
Установка конвейера в состояние PAUSED...
Установка конвейера в состояние READY…
Установка конвейера в состояние NULL…
Освобождение конвейера…

Я считаю, что это основная проблема
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Внутренняя ошибка потока данных.

Моя система – gentoo 3.5.7

У вас неправильный конвейер. Правильный следующий:

gst-launch-1.0 rtspsrc location=rtsp://user:[email protected]:554/live/ch00_0 ! rtph264depay ! h264parse ! decodebin ! autovideosink

или

gst-launch-1.0 rtspsrc location=rtsp://user:[email protected]:554/live/ch00_0 ! rtph264depay ! decodebin ! autovideosink

Поскольку вам нужно декодировать поток h264 перед отображением.
Вот основные цепочки для использования медиа:

  1. Декодирование: закодированный источник -> демультиплексор -> декодер -> приемник

  2. Кодирование: сырой источник (т.е. простая веб-камера) -> кодер -> мультиплексор -> приемник

Также проверьте способ настройки аутентификации для rtspsrc. Я не уверен в этом, но, возможно, единственный правильный вариант:
rtspsrc location=rtsp://192.168.81.32:554/live/ch00_0 user-id=user user-pw=password

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

Ошибка при использовании GStreamer для получения видео потока с IP-камеры по протоколу RTSP может быть вызвана рядом факторов, включая неверно сформированную конвейерную структуру, проблемы с аутентификацией, а также отсутствие необходимых декодеров.

Основная проблема

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

ОШИБКА: из элемента /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Internal data flow error.

Это указывает на проблему с внутренним потоком данных GStreamer, что, скорее всего, связано с неверной конфигурацией конвейера.

Правильный конвейер

Ошибки, которые возникают из-за неверного потока, обычно касаются того, что один из элементов в конвейере не может корректно обработать входящие данные. В вашем случае, использования rtph264depay недостаточно для отображения видео. Вам необходимо добавить декодирование H264 потока. Вот исправленный пример команды:

gst-launch-1.0 rtspsrc location=rtsp://user:<email>@192.168.81.32:554/live/ch00_0 ! rtph264depay ! h264parse ! decodebin ! autovideosink

Либо вы можете использовать альтернативный вариант:

gst-launch-1.0 rtspsrc location=rtsp://user:<email>@192.168.81.32:554/live/ch00_0 ! rtph264depay ! decodebin ! autovideosink

Объяснение архитектуры конвейера

Когда вы обрабатываете видеопоток, важно следовать базовому принципу для обработки мультимедийных данных:

  1. Декодирование: закодированный источник -> демультиплексор -> декодер -> приёмник (sink).
  2. Кодирование: сырой источник (например, веб-камера) -> кодировщик -> мультиплексор -> приёмник.

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

Проверка аутентификации

Также важно убедиться, что вы правильно настраиваете аутентификацию для rtspsrc. Для проверки корректной аутентификации используйте следующую конструкцию:

rtspsrc location=rtsp://192.168.81.32:554/live/ch00_0 user-id=user user-pw=password

Рекомендации

  1. Убедитесь, что GStreamer и все необходимые плагины установлены и актуальны.
  2. Проверьте доступность IP-камеры, убедитесь, что поток доступен.
  3. Проверьте настройки сети и брандмауэра, которые могут блокировать доступ к RTSP-потоку.
  4. Тестируйте стриминг с использованием других инструментов, например VLC, чтобы исключить программные ошибки IP-камеры.
  5. Рассмотрите возможность использования дополнительных логов GStreamer для диагностики ошибок:
GST_DEBUG=3 gst-launch-1.0 ...

Эта команда позволит вам получать более подробную информацию о процессе и поможет лучше понять, в чем заключается проблема.

Заключение

Использование правильного конвейера, настройка аутентификации и проверка всех компонентов являются ключевыми аспектами при работе с GStreamer и потоком RTSP. Если проблема сохраняется даже после выполнения всех рекомендаций, возможно, следует изучить документацию GStreamer и проводить диагностику совместно с сообществом.

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

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