RTSP GStreamer UDP Streaming & Διόρθωση λανθάνοντος χρόνου για θερμικές κάμερες

Ροή RTSP με GStreamer – Ένας πραγματικός πελάτης Q&Μια υπόθεση (UDP έναντι TCP)

Αυτό το άρθρο τεκμηριώνει μια πραγματική συνομιλία υποστήριξης πελατών σχετικά με τη ροή RTSP από το δικό μας θερμικές κάμερες χρήση Γελοιογράφος.
Το μοιραζόμαστε σε α Q&Μορφή διαλόγου ώστε άλλοι πελάτες που αντιμετωπίζουν παρόμοια προβλήματα να μπορούν να ακολουθήσουν γρήγορα τη διαδικασία αντιμετώπισης προβλημάτων.


1. Διεύθυνση ροής RTSP

Πελάτης:
Χαίρετε, παραλάβαμε τις θερμικές σας κάμερες, όλα λειτουργούν μια χαρά, ευχαριστώ, αλλά φαίνεται ότι δεν μπορούμε να βρούμε τη διεύθυνση για τη ροή RTSP. Τι είναι το /stream/sub?

Υποστήριξη:
Η διεύθυνση URL ροής RTSP της κάμεράς μας είναι:

rtsp://192.168.2.254:554/live

2. Ανησυχία καθυστέρησης RTSP

Πελάτης:
Δοκιμάσαμε τη ροή RTSP και παρατηρήσαμε σημαντική καθυστέρηση σε σύγκριση με την προεπισκόπηση του πίνακα διαχείρισης.

Υποστήριξη:
Αυτή είναι αναμενόμενη συμπεριφορά. Η προεπισκόπηση διαχείρισης ιστού χρησιμοποιεί μια εσωτερική βελτιστοποιημένη διοχέτευση, ενώ το RTSP εξαρτάται από τις συνθήκες δικτύου και την προσωρινή αποθήκευση του πελάτη.


3. Απαίτηση ροής UDP

Πελάτης:
Η ροή RTSP δεν λειτουργεί επίσης στο πρόγραμμα αναπαραγωγής μου που αναμένει UDP. Πώς μπορώ να λάβω μια ροή UDP?

Υποστήριξη:
Μπορώ να ξέρω τι παίκτη χρησιμοποιείτε? VLC?

Πελάτης:
Το πρόγραμμα αναπαραγωγής μου είναι το GStreamer ενσωματωμένο σε μια εφαρμογή Android.


4. UDP Unicast vs UDP Multicast

Υποστήριξη:
Εάν ο πελάτης GStreamer έχει πρόσβαση στη συσκευή χρησιμοποιώντας UDP multicast, αυτό είναι αυτή τη στιγμή δεν υποστηρίζεται.
Πρέπει να διευκρινίσουμε αν χρησιμοποιείτε UDP unicast ή UDP multicast.

Πελάτης:
Ο αγωγός μου 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

Υποστήριξη:
Ένας άλλος πιθανός λόγος είναι ότι εάν το RTSP ΠΕΡΙΓΡΑΦΩ το αίτημα δεν περιέχει:

application/sdp

η συσκευή ενδέχεται να αρνηθεί την υπηρεσία.

Αυτή η λογική επικύρωσης μπορεί να είναι πολύ αυστηρή, και σκοπεύουμε να χαλαρώσουμε αυτήν την κατάσταση σε μελλοντικές ενημερώσεις υλικολογισμικού.


8. Επιβεβαίωση έκδοσης Android GStreamer

Πελάτης:
Σε Android, χρησιμοποιώ:

  • gstreamer-1.0-android-universal-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 χρησιμοποιώντας Γελοιογράφος 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:

  • URL RTSP: rtsp://<camera_ip>:554/live
  • UDP unicast υποστηρίζεται; Το UDP multicast δεν είναι
  • Αποφύγετε τα προβληματικά πρόσθετα (Μόνο Linux)
  • Δοκιμή short-header=true για καλύτερη συμβατότητα
  • Τα αποτελέσματα δοκιμών Linux μπορούν γενικά να εφαρμοστούν στο Android

Εάν αντιμετωπίζετε παρόμοια προβλήματα, παρακαλώ δώστε το δικό σας Διοχέτευση GStreamer ή δοκιμαστικό πελάτη, και η ομάδα μηχανικών μας θα βοηθήσει περαιτέρω.

Κάνε μια ερώτηση

← Πίσω

Το μήνυμά σας έχει σταλεί