Потоковая передача 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, которые некоторые камеры не распознают., что приводит к ошибке отказа в обслуживании.

Ссылка:
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, и это сработало правильно.


Пример 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 или тестовый клиент, и наша команда инженеров поможет в дальнейшем.

Задайте вопрос
Спасибо за ответ! ✨