RTSP GStreamer UDP Streaming & Виправлення затримки для тепловізійних камер

Потокове передавання 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, які деякі камери не можуть розпізнати, що призводить до помилки відмови в обслуговуванні.

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-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, і це працювало правильно.

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, і наша команда інженерів допоможе.

задавати питання

← Назад

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