Ροή 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 που ορισμένες κάμερες δεν μπορούν να αναγνωρίσουν, με αποτέλεσμα ένα σφάλμα άρνησης εξυπηρέτησης.

Αναφορά:
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, και λειτούργησε σωστά.


Παράδειγμα 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 ή δοκιμαστικό πελάτη, και η ομάδα μηχανικών μας θα βοηθήσει περαιτέρω.

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