Truyền phát RTSP với GStreamer – Q khách hàng thực sự&một trường hợp (UDP và TCP)
Bài viết này ghi lại cuộc trò chuyện thực tế với bộ phận hỗ trợ khách hàng về việc phát trực tuyến RTSP từ máy ảnh nhiệt sử dụng Gstreamer.
Chúng tôi đang chia sẻ nó trong một Q&Định dạng hộp thoại để những khách hàng khác gặp phải vấn đề tương tự có thể nhanh chóng thực hiện quy trình khắc phục sự cố.
Mục lục
1. Địa chỉ luồng RTSP
Khách hàng:
chào bạn, chúng tôi đã nhận được máy ảnh nhiệt của bạn, mọi thứ đều hoạt động tốt, Cảm ơn, nhưng dường như chúng tôi không thể tìm thấy địa chỉ cho luồng RTSP. cái gì là /stream/sub?
Ủng hộ:
URL luồng RTSP máy ảnh của chúng tôi là:
rtsp://192.168.2.254:554/live
2. Mối quan tâm về độ trễ RTSP
Khách hàng:
Chúng tôi đã thử nghiệm luồng RTSP và nhận thấy độ trễ đáng kể so với bản xem trước của bảng quản lý.
Ủng hộ:
Đây là hành vi được mong đợi. Bản xem trước quản lý web sử dụng quy trình được tối ưu hóa nội bộ, trong khi RTSP phụ thuộc vào điều kiện mạng và bộ đệm máy khách.
3. Yêu cầu phát trực tuyến UDP
Khách hàng:
Luồng RTSP cũng không hoạt động trên trình phát của tôi yêu cầu UDP. Làm cách nào tôi có thể nhận được luồng UDP?
Ủng hộ:
Tôi có thể biết bạn đang sử dụng trình phát nào không? VLC?
Khách hàng:
Trình phát của tôi là GStreamer được tích hợp trong ứng dụng Android.
4. UDP Unicast so với UDP Multicast
Ủng hộ:
Nếu ứng dụng khách GStreamer truy cập thiết bị bằng cách sử dụng Phát đa hướng UDP, đây là hiện tại không được hỗ trợ.
Chúng tôi cần làm rõ liệu bạn có đang sử dụng UDP đơn hướng hoặc là Phát đa hướng UDP.
Khách hàng:
Đường dẫn GStreamer của tôi sử dụng rtspsrc với udp thiết lập trong protocols tham số.
Tôi đã không sử dụng udp-mcast giá trị, vì vậy nó phải là UDP unicast.
5. Làm rõ nền tảng
Ủng hộ:
GStreamer này có chạy trên Windows không, Linux, hoặc Android?
Kỹ sư phần mềm của chúng tôi muốn thử nghiệm về phía chúng tôi.
Khách hàng:
Ứng dụng của tôi sử dụng GStreamer trên Android, nhưng rtspsrc cũng có thể được thử nghiệm trên Linux.
6. Sự cố GStreamer của Linux đã biết (Trường hợp tham khảo)
Ủng hộ:
Chúng tôi tìm thấy một vấn đề tương tự được thảo luận trên diễn đàn kỹ thuật Trung Quốc.
Giải pháp:
Gỡ cài đặt plugin sau:
sudo apt-get remove gstreamer1.0-plugins-ugly
Plugin này có thể gửi tiêu đề RTSP mà một số máy ảnh không thể nhận ra, dẫn đến lỗi từ chối dịch vụ.

Thẩm quyền giải quyết:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Bạn có thể cung cấp của bạn rtspsrc đường ống (Linux ưa thích)? Một phiên bản ứng dụng cũng được chấp nhận để thử nghiệm.
7. RTSP MÔ TẢ Khả năng tương thích của tiêu đề
Ủng hộ:
Một lý do khác có thể là nếu RTSP MÔ TẢ yêu cầu không chứa:
application/sdp
thiết bị có thể từ chối dịch vụ.
Logic xác thực này có thể quá nghiêm ngặt, và chúng tôi dự định sẽ nới lỏng tình trạng này trong các bản cập nhật chương trình cơ sở trong tương lai.
8. Xác nhận phiên bản Android GStreamer
Khách hàng:
Trên Android, tôi đang sử dụng:
- gstreamer-1.0-android-universal-1.26.8
Nó không bao gồm các plugin xấu xí. Makefile của tôi chứa:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Tham số thời gian chạy GStreamer được đề xuất
Ủng hộ:
Chúng tôi khuyên bạn nên thử short-header=true trong rtspsrc.
Khách hàng:
Đó có phải là tiêu đề dành cho UDP không?
Ủng hộ:
Đây là tùy chọn tiêu đề RTSP và thường cải thiện khả năng tương thích.
Ví dụ:
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. Kết quả kiểm tra nội bộ (Linux)
Ủng hộ:
Kỹ sư của chúng tôi đã thử nghiệm luồng RTSP bằng cách sử dụng Gstreamer 1.0 trên Linux, và nó đã hoạt động chính xác.


ví dụ về TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
ví dụ về UDP (di dời protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Logic bên trong giữa Linux và Android GStreamer là như nhau, vì vậy hành vi phải nhất quán trên các nền tảng.
11. Phần kết luận
Trường hợp này nêu bật một số điểm quan trọng khi sử dụng RTSP với GStreamer:
- URL RTSP:
rtsp://<camera_ip>:554/live - UDP phát đơn hướng được hỗ trợ; Phát đa hướng UDP không
- Tránh các plugin có vấn đề (Chỉ Linux)
- Thử
short-header=trueđể tương thích tốt hơn - Kết quả thử nghiệm Linux nhìn chung có thể áp dụng được cho Android
Nếu bạn gặp phải vấn đề tương tự, vui lòng cung cấp của bạn Đường dẫn GStreamer hoặc ứng dụng khách thử nghiệm, và đội ngũ kỹ thuật của chúng tôi sẽ hỗ trợ thêm.

Đặt một câu hỏi
Tin nhắn của bạn đã được gửi