RTSP GStreamer UDP-стриминг & Исправление задержки для тепловизионных камер

Потоковая передача RTSP с помощью GStreamer – вопрос настоящего клиента&Дело (UDP против TCP)

В этой статье описывается реальный разговор со службой поддержки относительно потоковой передачи RTSP с нашей тепловые камеры с использованием GSTREAMER.
Мы делимся этим в Q&Формат диалога чтобы другие клиенты, столкнувшиеся с аналогичными проблемами, могли быстро следить за процессом устранения неполадок..


1. Адрес потока RTSP

Клиент:
Здравствуйте, мы получили ваши тепловизионные камеры, все работает нормально, Спасибо, но мы не можем найти адрес для RTSP-потока. Что такое /stream/sub?

Поддержка:
URL-адрес потока RTSP нашей камеры::

rtsp://192.168.2.254:554/live

2. Проблема задержки RTSP

Клиент:
Мы протестировали поток RTSP и заметили значительную задержку по сравнению с предварительным просмотром панели управления..

Поддержка:
Это ожидаемое поведение. Предварительная версия веб-управления использует внутренний оптимизированный конвейер., в то время как RTSP зависит от условий сети и буферизации клиента.


3. Требования к потоковой передаче UDP

Клиент:
Поток RTSP также не работает на моем плеере, который ожидает UDP.. Как я могу получить поток UDP?

Поддержка:
Могу ли я узнать, какой плеер вы используете?? VLC?

Клиент:
Мой плеер — GStreamer, интегрированный в приложение для Android..


4. UDP Unicast против UDP Multicast

Поддержка:
Если клиент GStreamer обращается к устройству с помощью UDP Multicast, это в настоящее время не поддерживается.
Нам необходимо уточнить, используете ли вы Одноадресная передача UDP или UDP Multicast.

Клиент:
Мой конвейер GStreamer использует rtspsrc с udp установлен в protocols параметр.
Я не использовал udp-mcast ценить, так что это должна быть одноадресная передача UDP.


5. Разъяснение платформы

Поддержка:
Этот GStreamer работает в Windows?, Linux, или Андроид?
Наш инженер-программист хотел бы протестировать на нашей стороне.

Клиент:
Мое приложение использует GStreamer на Android, но rtspsrc также можно протестировать на Linux.


6. Известная проблема Linux GStreamer (Эталонный случай)

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

Решение:
Удалите следующий плагин:

sudo apt-get remove gstreamer1.0-plugins-ugly

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

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

Ссылка:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14

Не могли бы вы предоставить свой rtspsrc трубопровод (Предпочтителен Linux)? Версия приложения также приемлема для тестирования..


7. Совместимость заголовков RTSP DESCRIBE

Поддержка:
Другая возможная причина заключается в том, что если RTSP ОПИСЫВАТЬ запрос не содержит:

application/sdp

устройство может отказаться от обслуживания.

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


8. Подтверждение версии Android GStreamer

Клиент:
На Android, я использую:

  • gstreamer-1.0-android-универсальный-1.26.8

Он не включает уродливые плагины. Мой Makefile содержит:

GSTREAMER_PLUGINS := \
    coreelements \
    playback \
    typefindfunctions \
    rtsp \
    rtp \
    rtpmanager \
    udp \
    tcp \
    videoparsersbad \
    androidmedia \
    opengl

9. Рекомендуемые параметры времени выполнения GStreamer

Поддержка:
Рекомендуем попробовать short-header=true в rtspsrc.

Клиент:
Это заголовок для UDP??

Поддержка:
Это опция заголовка RTSP, которая часто улучшает совместимость..

Примеры:

gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> short-header=true
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> do-rtcp=false short-header=true

10. Результаты внутреннего тестирования (Linux)

Поддержка:
Наш инженер протестировал поток RTSP, используя GSTREAMER 1.0 в Linux, и это сработало правильно.

GStream-1 test on linux
Тест GStream-1 в Linux
GStream-1 test on linux working well
Тест GStream-1 на Linux работает хорошо

Пример TCP:

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
  protocols=tcp \
src. \
  ! decodebin \
  ! autovideosink

UDP-пример (удалять protocols=tcp):

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
src. \
  ! decodebin \
  ! autovideosink

Внутренняя логика между Linux и Android GStreamer одинакова., поэтому поведение должно быть одинаковым на разных платформах.


11. Заключение

Этот случай подчеркивает несколько важных моментов при использовании RTSP с GStreamer.:

  • URL-адрес RTSP: rtsp://<camera_ip>:554/live
  • UDP одноадресная передача поддерживается; Многоадресная рассылка по UDP не предусмотрена.
  • Избегайте проблемных плагинов (только Linux)
  • Пытаться short-header=true для лучшей совместимости
  • Результаты тестов Linux обычно применимы к Android

Если вы столкнулись с подобными проблемами, пожалуйста, предоставьте свой Конвейер GStreamer или тестовый клиент, и наша команда инженеров поможет в дальнейшем.

Задайте вопрос

← Назад

Спасибо за ответ! ✨