RTSP GStreamer UDP поточно предаване & Корекция на латентност за термокамери

RTSP поточно предаване с GStreamer – истински клиент Q&Случай (UDP срещу TCP)

Тази статия документира истински разговор за поддръжка на клиенти относно RTSP поточно предаване от нашия термокамери Използване Gstreamer.
Споделяме го в a Q&Диалогов формат така че други клиенти, изправени пред подобни проблеми, могат бързо да следват процеса на отстраняване на неизправности.


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

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

поддържа:
Нашата камера RTSP поток URL е:

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 мултикаст, това е в момента не се поддържа.
Трябва да изясним дали използвате UDP едноадресно предаване или UDP мултикаст.

Клиент:
Моят тръбопровод 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 Header

поддържа:
Друга възможна причина е, че ако RTSP ОПИСАЙТЕ искането не съдържа:

application/sdp

устройството може да откаже услугата.

Тази логика на валидиране може да е твърде строга, и планираме да облекчим това условие при бъдещи актуализации на фърмуера.


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

Клиент:
На Android, използвам:

  • gstreamer-1.0-андроид-универсален-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:

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

Ако срещнете подобни проблеми, моля, предоставете своя Конвейер или тестов клиент на GStreamer, и нашият инженерен екип ще помогне допълнително.

Задай въпрос

← Назад

Вашето съобщение е изпратено