RTSP GStreamer UDP-streaming & Latency-fix voor thermische camera's

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.


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.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

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.

GStream-1 test on linux
GStream-1-test op Linux
GStream-1 test on linux working well
GStream-1-test op Linux werkt goed

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=true voor 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

← Terug

Bedankt voor je reactie. ✨