RTSP-streaming met GStreamer – een echte klant&Een geval (UDP versus TCP)
Dit artikel documenteert een echt klantondersteuningsgesprek over RTSP-streaming van onze thermische camera's gebruik Gstreamer.
Wij delen het in een Q&Een dialoogformaat zodat andere klanten met soortgelijke problemen snel het probleemoplossingsproces kunnen volgen.
Inhoudsopgave
1. RTSP-streamadres
Klant:
Hallo, wij hebben uw thermische camera's ontvangen, alles werkt prima, Bedankt, maar het lijkt erop dat we het adres voor de RTSP-stream niet kunnen vinden. Wat is de /stream/sub?
Ondersteuning:
Onze camera RTSP-stream-URL is:
rtsp://192.168.2.254:554/live
2. Probleem met RTSP-latentie
Klant:
We hebben de RTSP-stream getest en merkten een aanzienlijke latentie op in vergelijking met de preview van het beheerpaneel.
Ondersteuning:
Dit is verwacht gedrag. De preview voor webbeheer maakt gebruik van een interne geoptimaliseerde pijplijn, terwijl RTSP afhankelijk is van netwerkomstandigheden en clientbuffering.
3. UDP-streamingvereiste
Klant:
De RTSP-stream werkt ook niet op mijn speler die UDP verwacht. Hoe kan ik een UDP-stream krijgen??
Ondersteuning:
Mag ik weten welke speler je gebruikt?? VLC?
Klant:
Mijn speler is GStreamer geïntegreerd in een Android-app.
4. UDP Unicast versus UDP Multicast
Ondersteuning:
Als de GStreamer-client toegang krijgt tot het apparaat met behulp van UDP-multicast, dit is momenteel niet ondersteund.
We moeten verduidelijken of u gebruikt UDP-unicast of UDP-multicast.
Klant:
Mijn GStreamer-pijplijn gebruikt rtspsrc met udp ingesteld in de protocols parameter.
Ik heb geen gebruik gemaakt van de udp-mcast waarde, dus het zou UDP-unicast moeten zijn.
5. Platformverduidelijking
Ondersteuning:
Draait deze GStreamer op Windows?, Linux, of Android?
Onze software-ingenieur wil graag aan onze kant testen.
Klant:
Mijn app maakt gebruik van GStreamer op Android, Maar rtspsrc kan ook op Linux worden getest.
6. Bekend Linux GStreamer-probleem (Referentiegeval)
Ondersteuning:
We hebben een soortgelijk probleem gevonden dat werd besproken op een Chinees technisch forum.
Oplossing:
Verwijder de volgende plug-in:
sudo apt-get remove gstreamer1.0-plugins-ugly
Deze plug-in kan RTSP-headers verzenden die sommige camera's niet kunnen herkennen, resulterend in een denial-of-service-fout.

Referentie:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Kunt u uw rtspsrc pijpleiding (Linux heeft de voorkeur)? Een app-versie is ook acceptabel om te testen.
7. RTSP BESCHRIJVEN Headercompatibiliteit
Ondersteuning:
Een andere mogelijke reden is dat als de RTSP BESCHRIJVEN verzoek bevat niet:
application/sdp
het apparaat kan de service weigeren.
Deze validatielogica is mogelijk te strikt, en we zijn van plan deze voorwaarde te versoepelen in toekomstige firmware-updates.
8. Bevestiging van Android GStreamer-versie
Klant:
Op Android, Ik gebruik:
- gstreamer-1.0-android-universeel-1.26.8
Het bevat geen lelijke plug-ins. Mijn Makefile bevat:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Voorgestelde GStreamer Runtime-parameters
Ondersteuning:
Wij raden aan om het te proberen short-header=true in rtspsrc.
Klant:
Is dat header voor UDP?
Ondersteuning:
Het is een RTSP-headeroptie en verbetert vaak de compatibiliteit.
Voorbeelden:
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. Interne testresultaten (Linux)
Ondersteuning:
Onze ingenieur heeft de RTSP-stream getest met behulp van Gstreamer 1.0 op Linux, en het werkte correct.


TCP-voorbeeld:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
UDP-voorbeeld (verwijderen protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
De interne logica tussen Linux en Android GStreamer is hetzelfde, gedrag moet dus consistent zijn op alle platforms.
11. Conclusie
Deze casus belicht een aantal belangrijke punten bij het gebruik van RTSP met GStreamer:
- RTSP-URL:
rtsp://<camera_ip>:554/live - UDP Unicast is ondersteund; UDP-multicast is dat niet
- Vermijd problematische plug-ins (Alleen Linux)
- Poging
short-header=truevoor een betere compatibiliteit - Linux-testresultaten kunnen over het algemeen worden toegepast op Android
Als u soortgelijke problemen tegenkomt, geef alstublieft uw GStreamer-pijplijn of testclient, en ons engineeringteam zal u verder helpen.

Een vraag stellen
Bedankt voor je reactie. ✨