RTSP GStreamer UDP สตรีมมิ่ง & การแก้ไข Latency สำหรับกล้องถ่ายภาพความร้อน

RTSP Streaming ด้วย GStreamer – ถามลูกค้าจริง&กรณี (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 กับ UDP Multicast

สนับสนุน:
หากไคลเอ็นต์ GStreamer เข้าถึงอุปกรณ์โดยใช้ UDP มัลติคาสต์, นี่คือปัจจุบัน ไม่รองรับ.
เราต้องชี้แจงว่าคุณใช้งานหรือไม่ UDP ยูนิคาสต์ หรือ UDP มัลติคาสต์.

ลูกค้า:
ไปป์ไลน์ GStreamer ของฉันใช้ rtspsrc กับ udp ตั้งอยู่ใน protocols พารามิเตอร์.
ฉันไม่ได้ใช้ udp-mcast ค่า, ดังนั้นจึงควรเป็น UDP unicast.


5. การชี้แจงแพลตฟอร์ม

สนับสนุน:
GStreamer นี้ทำงานบน Windows หรือไม่, ลินุกซ์, หรือระบบแอนดรอยด์?
วิศวกรซอฟต์แวร์ของเราต้องการทดสอบฝั่งเรา.

ลูกค้า:
แอพของฉันใช้ 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 ไปป์ไลน์ (ต้องการลินุกซ์)? เวอร์ชันแอปยังเป็นที่ยอมรับสำหรับการทดสอบอีกด้วย.


7. RTSP อธิบายความเข้ากันได้ของส่วนหัว

สนับสนุน:
สาเหตุที่เป็นไปได้อีกประการหนึ่งก็คือหาก RTSP อธิบาย คำขอไม่มี:

application/sdp

อุปกรณ์อาจปฏิเสธการให้บริการ.

ตรรกะการตรวจสอบนี้อาจเข้มงวดเกินไป, และเราวางแผนที่จะผ่อนคลายเงื่อนไขนี้ในการอัพเดตเฟิร์มแวร์ในอนาคต.


8. การยืนยันเวอร์ชัน Android GStreamer

ลูกค้า:
บนระบบปฏิบัติการแอนดรอยด์, ฉันใช้:

  • gstreamer-1.0-android-สากล-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. ผลการทดสอบภายใน (ลินุกซ์)

สนับสนุน:
วิศวกรของเราทดสอบสตรีม RTSP โดยใช้ เครื่องกรัม 1.0 บนลินุกซ์, และมันก็ทำงานได้อย่างถูกต้อง.

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 ยูนิคาสต์ ได้รับการสนับสนุน; UDP มัลติคาสต์ไม่ใช่
  • หลีกเลี่ยงปลั๊กอินที่มีปัญหา (ลินุกซ์เท่านั้น)
  • พยายาม short-header=true เพื่อความเข้ากันได้ที่ดีขึ้น
  • โดยทั่วไปผลการทดสอบ Linux สามารถนำไปใช้กับ Android ได้

หากคุณพบปัญหาที่คล้ายกัน, กรุณาระบุของคุณ ไปป์ไลน์ GStreamer หรือไคลเอนต์ทดสอบ, และทีมวิศวกรของเราจะช่วยเหลือต่อไป.

ถามคำถาม

← ย้อนกลับ

ข้อความของคุณถูกส่งแล้ว