Streamování RTSP s GStreamer – skutečný zákazník Q&Případ (UDP vs TCP)
Tento článek dokumentuje skutečnou konverzaci zákaznické podpory týkající se streamování RTSP z našeho webu termokamery pomocí Gstreamer.
Sdílíme to v a Q&Formát dialogu takže ostatní zákazníci, kteří se potýkají s podobnými problémy, mohou rychle sledovat proces odstraňování problémů.
Obsah
1. Adresa streamu RTSP
Zákazník:
Ahoj, dostali jsme vaše termokamery, vše funguje dobře, Děkuji, ale zdá se, že nemůžeme najít adresu pro stream RTSP. Co je /stream/sub?
Podpěra, podpora:
Adresa URL streamu RTSP naší kamery je:
rtsp://192.168.2.254:554/live
2. Obavy z latence RTSP
Zákazník:
Testovali jsme stream RTSP a zaznamenali jsme značnou latenci ve srovnání s náhledem panelu správy.
Podpěra, podpora:
Toto je očekávané chování. Náhled webové správy používá interní optimalizovaný kanál, zatímco RTSP závisí na podmínkách sítě a vyrovnávací paměti klienta.
3. Požadavek na streamování UDP
Zákazník:
Stream RTSP také nefunguje na mém přehrávači, který očekává UDP. Jak mohu získat UDP stream?
Podpěra, podpora:
Mohu vědět, jaký přehrávač používáte? VLC?
Zákazník:
Můj přehrávač je GStreamer integrovaný v aplikaci pro Android.
4. UDP Unicast vs UDP Multicast
Podpěra, podpora:
Pokud klient GStreamer přistupuje k zařízení pomocí UDP multicast, toto je aktuálně není podporováno.
Musíme si ujasnit, zda používáte UDP unicast nebo UDP multicast.
Zákazník:
Můj kanál GStreamer používá rtspsrc s udp zasazen do protocols parametr.
Nepoužil jsem udp-mcast hodnota, takže by to mělo být UDP unicast.
5. Vyjasnění platformy
Podpěra, podpora:
Běží tento GStreamer na Windows?, Linux, nebo Android?
Náš softwarový inženýr by rád otestoval na naší straně.
Zákazník:
Moje aplikace používá GStreamer na Androidu, ale rtspsrc lze testovat i na Linuxu.
6. Známý problém Linux GStreamer (Referenční případ)
Podpěra, podpora:
Našli jsme podobný problém projednávaný na čínském technickém fóru.
Řešení:
Odinstalujte následující plugin:
sudo apt-get remove gstreamer1.0-plugins-ugly
Tento plugin může odesílat hlavičky RTSP, které některé kamery nedokážou rozpoznat, což má za následek chybu odmítnutí služby.

Odkaz:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Mohl byste poskytnout svůj rtspsrc potrubí (Linux preferován)? Pro testování je přijatelná i verze aplikace.
7. RTSP POPISUJTE kompatibilitu záhlaví
Podpěra, podpora:
Dalším možným důvodem je, že pokud RTSP POPSAT žádost neobsahuje:
application/sdp
zařízení může službu odmítnout.
Tato logika ověřování může být příliš přísná, a plánujeme tento stav zmírnit v budoucích aktualizacích firmwaru.
8. Potvrzení verze Android GStreamer
Zákazník:
Na Androidu, já používám:
- gstreamer-1.0-android-universal-1.26.8
Neobsahuje ošklivé pluginy. Můj soubor Makefile obsahuje:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Doporučené parametry běhu GStreamer
Podpěra, podpora:
Doporučujeme vyzkoušet short-header=true v rtspsrc.
Zákazník:
Je to hlavička pro UDP?
Podpěra, podpora:
Je to možnost záhlaví RTSP a často zlepšuje kompatibilitu.
Příklady:
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. Výsledky interních testů (Linux)
Podpěra, podpora:
Náš technik testoval stream RTSP pomocí Gstreamer 1.0 na Linuxu, a fungovalo to správně.


Příklad TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
Příklad UDP (odstranit protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Vnitřní logika mezi Linuxem a Androidem GStreamer je stejná, takže chování by mělo být konzistentní napříč platformami.
11. Závěr
Tento případ zdůrazňuje několik důležitých bodů při používání RTSP s GStreamerem:
- RTSP URL:
rtsp://<camera_ip>:554/live - UDP unicast je podporován; UDP multicast není
- Vyhněte se problematickým pluginům (Pouze Linux)
- Pokus
short-header=truepro lepší kompatibilitu - Výsledky testů Linuxu lze obecně aplikovat na Android
Pokud narazíte na podobné problémy, prosím poskytněte svůj GStreamer potrubí nebo testovací klient, a náš technický tým vám bude dále pomáhat.

Položit otázku
Děkujeme za Vaši odpověď. ✨