Streaming UDP RTSP GStreamer & Perbaikan Latensi untuk Kamera Termal

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.


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.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

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.

GStream-1 test on linux
Tes GStream-1 di linux
GStream-1 test on linux working well
Tes GStream-1 di linux berfungsi dengan baik

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

← Kembali

Terima kasih atas tanggapan Anda. ✨