Streaming RTSP dengan GStreamer – Pelanggan Nyata Q&Sebuah Kasus (UDP vs TCP)
Artikel ini mendokumentasikan percakapan dukungan pelanggan nyata mengenai streaming RTSP dari kami kamera termal menggunakan Gstreamer.
Kami membagikannya dalam a Q&Format dialog sehingga pelanggan lain yang menghadapi masalah serupa dapat dengan cepat mengikuti proses pemecahan masalah.
Daftar isi
1. Alamat Aliran RTSP
Pelanggan:
Halo, kami menerima kamera termal Anda, semuanya berfungsi dengan baik, Terima kasih, tapi sepertinya kami tidak dapat menemukan alamat aliran RTSP. Apakah yang /stream/sub?
Mendukung:
URL aliran RTSP kamera kami adalah:
rtsp://192.168.2.254:554/live
2. Masalah Latensi RTSP
Pelanggan:
Kami menguji aliran RTSP dan melihat latensi yang cukup besar dibandingkan dengan pratinjau panel manajemen.
Mendukung:
Ini adalah perilaku yang diharapkan. Pratinjau manajemen web menggunakan saluran internal yang dioptimalkan, sedangkan RTSP bergantung pada kondisi jaringan dan buffering klien.
3. Persyaratan Streaming UDP
Pelanggan:
Aliran RTSP juga tidak berfungsi pada pemutar saya yang mengharapkan UDP. Bagaimana saya bisa mendapatkan aliran UDP?
Mendukung:
Bolehkah saya tahu pemutar apa yang Anda gunakan? VLC?
Pelanggan:
Pemutar saya adalah GStreamer yang terintegrasi dalam aplikasi Android.
4. UDP Unicast vs UDP Multicast
Mendukung:
Jika klien GStreamer mengakses perangkat menggunakan UDP Multicast, ini saat ini tidak didukung.
Kami perlu mengklarifikasi apakah Anda menggunakan UDP unicast atau UDP Multicast.
Pelanggan:
Pipeline GStreamer saya menggunakan rtspsrc dengan udp atur di protocols parameter.
Saya tidak menggunakan udp-mcast nilai, jadi itu harusnya UDP unicast.
5. Klarifikasi Platform
Mendukung:
Apakah GStreamer ini berjalan di Windows, Linux, atau Android?
Insinyur perangkat lunak kami ingin menguji di pihak kami.
Pelanggan:
Aplikasi saya menggunakan GStreamer di Android, tetapi rtspsrc juga dapat diuji di Linux.
6. Masalah Linux GStreamer yang Diketahui (Kasus Referensi)
Mendukung:
Kami menemukan masalah serupa dibahas di forum teknis Tiongkok.
Larutan:
Copot pemasangan plugin berikut:
sudo apt-get remove gstreamer1.0-plugins-ugly
Plugin ini mungkin mengirimkan header RTSP yang tidak dapat dikenali oleh beberapa kamera, mengakibatkan kesalahan penolakan layanan.

Referensi:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Bisakah Anda memberikan rtspsrc saluran pipa (Linux lebih disukai)? Versi aplikasi juga dapat diterima untuk pengujian.
7. RTSP DESCRIBE Kompatibilitas Header
Mendukung:
Alasan lain yang mungkin adalah jika RTSP MENGGAMBARKAN permintaan tidak mengandung:
application/sdp
perangkat mungkin menolak layanan tersebut.
Logika validasi ini mungkin terlalu ketat, dan kami berencana untuk melonggarkan kondisi ini pada pembaruan firmware di masa mendatang.
8. Konfirmasi Versi Android GStreamer
Pelanggan:
Di Android, saya menggunakan:
- gstreamer-1.0-android-universal-1.26.8
Itu tidak termasuk plugin jelek. Makefile saya berisi:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Parameter Waktu Proses GStreamer yang Disarankan
Mendukung:
Kami merekomendasikan untuk mencoba short-header=true di rtspsrc.
Pelanggan:
Apakah itu header untuk UDP?
Mendukung:
Ini adalah opsi header RTSP dan sering kali meningkatkan kompatibilitas.
Contoh:
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. Hasil Tes Internal (Linux)
Mendukung:
Teknisi kami menguji aliran RTSP menggunakan Gstreamer 1.0 di Linux, dan itu bekerja dengan benar.


Contoh TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
Contoh UDP (menghapus protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Logika internal antara Linux dan Android GStreamer sama, jadi perilakunya harus konsisten di seluruh platform.
11. Kesimpulan
Kasus ini menyoroti beberapa poin penting saat menggunakan RTSP dengan GStreamer:
- URL RTSP:
rtsp://<camera_ip>:554/live - UDP unicast didukung; Multicast UDP tidak
- Hindari plugin yang bermasalah (Hanya Linux)
- Mencoba
short-header=trueuntuk kompatibilitas yang lebih baik - Hasil tes Linux secara umum bisa diterapkan di Android
Jika Anda mengalami masalah serupa, tolong berikan milikmu Saluran pipa GStreamer atau klien pengujian, dan tim teknik kami akan membantu lebih lanjut.

Berikan pertanyaan
Terima kasih atas tanggapan Anda. ✨