RTSP GStreamer Streaming UDP & Correzione della latenza per le termocamere

Streaming RTSP con GStreamer: un vero cliente D&Un caso (UDP contro TCP)

Questo articolo documenta una conversazione reale con l'assistenza clienti riguardante lo streaming RTSP dal nostro telecamere termiche usando Gstreamer.
Lo condividiamo in a Q&Un formato di dialogo in modo che altri clienti che affrontano problemi simili possano seguire rapidamente il processo di risoluzione dei problemi.


1. Indirizzo del flusso RTSP

Cliente:
Ciao, abbiamo ricevuto le vostre termocamere, tutto funziona bene, grazie, ma non riusciamo a trovare l'indirizzo per lo stream RTSP. Cos'è il /stream/sub?

Supporto:
L'URL del flusso RTSP della nostra telecamera è:

rtsp://192.168.2.254:554/live

2. Preoccupazione sulla latenza RTSP

Cliente:
Abbiamo testato lo streaming RTSP e abbiamo notato una notevole latenza rispetto all'anteprima del pannello di gestione.

Supporto:
Questo è il comportamento previsto. L'anteprima della gestione web utilizza una pipeline interna ottimizzata, mentre RTSP dipende dalle condizioni della rete e dal buffering del client.


3. Requisito di streaming UDP

Cliente:
Inoltre, il flusso RTSP non funziona sul mio lettore che prevede UDP. Come posso ottenere un flusso UDP?

Supporto:
Posso sapere che lettore stai utilizzando?? VLC?

Cliente:
Il mio lettore è GStreamer integrato in un'app Android.


4. UDP Unicast e UDP Multicast

Supporto:
Se il client GStreamer accede al dispositivo utilizzando Multicast UDP, questo è attualmente non supportato.
Dobbiamo chiarire se lo stai utilizzando Unicast UDP o Multicast UDP.

Cliente:
La mia pipeline GStreamer utilizza rtspsrc con udp impostato nel protocols parametro.
Non ho usato il udp-mcast valore, quindi dovrebbe essere unicast UDP.


5. Chiarimento sulla piattaforma

Supporto:
Questo GStreamer è in esecuzione su Windows, Linux, o Android?
Il nostro ingegnere del software vorrebbe testare dalla nostra parte.

Cliente:
La mia app utilizza GStreamer su Android, Ma rtspsrc può essere testato anche su Linux.


6. Problema noto di Linux GStreamer (Caso di riferimento)

Supporto:
Abbiamo trovato un problema simile discusso in un forum tecnico cinese.

Soluzione:
Disinstallare il seguente plugin:

sudo apt-get remove gstreamer1.0-plugins-ugly

Questo plugin potrebbe inviare intestazioni RTSP che alcune fotocamere non sono in grado di riconoscere, con conseguente errore di negazione del servizio.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

Riferimento:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14

Potresti fornire il tuo rtspsrc conduttura (Preferibile Linux)? Per il test è accettabile anche una versione dell'app.


7. Compatibilità intestazione DESCRIBE RTSP

Supporto:
Un'altra possibile ragione è che se RTSP DESCRIVERE la richiesta non contiene:

application/sdp

il dispositivo potrebbe rifiutare il servizio.

Questa logica di convalida potrebbe essere troppo rigida, e prevediamo di allentare questa condizione nei futuri aggiornamenti del firmware.


8. Conferma della versione di Android GStreamer

Cliente:
Su Android, Sto usando:

  • gstreamer-1.0-android-universal-1.26.8

Non include plugin brutti. Il mio Makefile contiene:

GSTREAMER_PLUGINS := \
    coreelements \
    playback \
    typefindfunctions \
    rtsp \
    rtp \
    rtpmanager \
    udp \
    tcp \
    videoparsersbad \
    androidmedia \
    opengl

9. Parametri di runtime GStreamer suggeriti

Supporto:
Ti consigliamo di provare short-header=true in rtspsrc.

Cliente:
Quella è l'intestazione per UDP?

Supporto:
È un'opzione di intestazione RTSP e spesso migliora la compatibilità.

Esempi:

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. Risultati dei test interni (Linux)

Supporto:
Il nostro ingegnere ha testato il flusso RTSP utilizzando Gstreamer 1.0 su Linux, e ha funzionato correttamente.

GStream-1 test on linux
Test GStream-1 su Linux
GStream-1 test on linux working well
Il test GStream-1 su Linux funziona bene

Esempio TCP:

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
  protocols=tcp \
src. \
  ! decodebin \
  ! autovideosink

Esempio dell'UDP (rimuovere protocols=tcp):

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
src. \
  ! decodebin \
  ! autovideosink

La logica interna tra Linux e Android GStreamer è la stessa, quindi il comportamento dovrebbe essere coerente su tutte le piattaforme.


11. Conclusione

Questo caso evidenzia diversi punti importanti quando si utilizza RTSP con GStreamer:

  • URL RTSP: rtsp://<camera_ip>:554/live
  • UDP unicast è supportato; Il multicast UDP non lo è
  • Evita plugin problematici (Solo Linux)
  • Tentativo short-header=true per una migliore compatibilità
  • I risultati dei test Linux possono generalmente essere applicati ad Android

Se riscontri problemi simili, per favore fornisci il tuo Pipeline GStreamer o client di test, e il nostro team di ingegneri ti assisterà ulteriormente.

Fai una domanda

← Precedente

Grazie per la risposta. ✨