RTSP GStreamer UDP 流媒體 & 熱像儀的延遲修復

使用 GStreamer 進行 RTSP 串流 – 真實客戶問題&案例 (UDP 與 TCP)

本文記錄了我們的 RTSP 串流媒體的真實客戶支援對話 熱像儀 使用 GStreamer.
我們正在分享它 Q&對話方塊格式 以便其他面臨類似問題的客戶可以快速遵循故障排除流程.


1. RTSP串流位址

顧客:
你好, 我們收到了您的熱像儀, 一切正常, 謝謝, 但我們似乎找不到 RTSP 流的位址. 什麼是 /stream/sub?

支持:
我們的相機 RTSP 串流 URL 是:

rtsp://192.168.2.254:554/live

2. RTSP 延遲問題

顧客:
我們測試了 RTSP 串流,發現與管理面板預覽相比有相當大的延遲.

支持:
這是預期的行為. Web管理預覽使用內部最佳化的管道, 而 RTSP 取決於網路條件和客戶端緩衝.


3. UDP 串流媒體要求

顧客:
RTSP 串流也無法在我需要 UDP 的播放器上執行. 如何取得 UDP 串流?

支持:
我可以知道你用的是什麼播放器嗎? VLC?

顧客:
我的播放器是整合在 Android 應用程式中的 GStreamer.


4. UDP 單播與 UDP 群播

支持:
如果 GStreamer 用戶端使用以下方式存取設備 UDP多播, 這是目前 不支援.
我們需要澄清您是否正在使用 UDP單播 要么 UDP多播.

顧客:
我的 GStreamer 管道使用 rtspsrcudp 設定在 protocols 範圍.
我沒有使用 udp-mcast 價值, 所以應該是UDP單播.


5. 平台澄清

支持:
這個 GStreamer 是否在 Windows 上運行, Linux的, 或安卓?
我們的軟體工程師想在我們這邊進行測試.

顧客:
我的應用程式在 Android 上使用 GStreamer, 但 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 管道 (Linux首選)? 應用程式版本也可以用於測試.


7. RTSP DESCRIBE 標頭相容性

支持:
另一個可能的原因是,如果 RTSP 描述 請求不包含:

application/sdp

設備可能會拒絕服務.

這個驗證邏輯可能過於嚴格, 我們計劃在未來的韌體更新中放寬此條件.


8. Android GStreamer 版本確認

顧客:
在安卓上, 我正在使用:

  • gstreamer-1.0-android-universal-1.26.8

它不包括醜陋的插件. 我的 Makefile 包含:

GSTREAMER_PLUGINS := \
    coreelements \
    playback \
    typefindfunctions \
    rtsp \
    rtp \
    rtpmanager \
    udp \
    tcp \
    videoparsersbad \
    androidmedia \
    opengl

9. 建議的 GStreamer 運行時參數

支持:
我們建議嘗試 short-header=truertspsrc.

顧客:
這是 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. 內部測試結果 (Linux的)

支持:
我們的工程師使用以下方法測試了 RTSP 流 GStreamer 1.0 在Linux上, 它工作正常.

GStream-1 test on linux
Linux 上的 GStream-1 測試
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 結合使用時的幾個要點:

  • RTSP 網址: rtsp://<camera_ip>:554/live
  • UDP 單播 得到支持; UDP 多播不是
  • 避免有問題的插件 (僅限Linux)
  • 嘗試 short-header=true 為了更好的兼容性
  • Linux測試結果一般可以應用在Android上

如果您遇到類似問題, 請提供您的 GStreamer 管道或測試客戶端, 我們的工程團隊將進一步提供協助.

問一個問題

← 返回

感謝你的回應。 ✨