Потокове передавання RTSP за допомогою GStreamer – Питання справжнього клієнта&Справа (UDP проти TCP)
У цій статті задокументовано реальну розмову зі службою підтримки клієнтів щодо потокового передавання RTSP із нашого теплові камери використання Gstreamer.
Ми ділимося цим у a 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 unicast.
5. Роз'яснення платформи
підтримка:
Чи працює цей GStreamer у Windows?, Linux, або Android?
Наш програмний інженер хотів би протестувати на нашому боці.
Замовник:
Моя програма використовує 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-universal-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, і наша команда інженерів допоможе.

задавати питання
Дякуємо за вашу відповідь. ✨