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 ที่กล้องบางตัวไม่รู้จัก, ส่งผลให้เกิดข้อผิดพลาดในการปฏิเสธการให้บริการ.

อ้างอิง:
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 บนลินุกซ์, และมันก็ทำงานได้อย่างถูกต้อง.


ตัวอย่าง 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 หรือไคลเอนต์ทดสอบ, และทีมวิศวกรของเราจะช่วยเหลือต่อไป.

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