RTSP GStreamer UDP ストリーミング & サーマルカメラの遅延を修正

GStreamer を使用した RTSP ストリーミング – 実際の顧客 Q&事例 (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 パイプラインは rtspsrc とともに udp に設定されています 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 ヘッダーの互換性

サポート:
もう 1 つの考えられる理由は、RTSP が 説明する リクエストには次の内容が含まれていません:

application/sdp

デバイスがサービスを拒否する場合があります.

この検証ロジックは厳密すぎる可能性があります, 今後のファームウェアアップデートでこの条件を緩和する予定です.


8. Android GStreamer バージョンの確認

お客様:
Androidの場合, 私は使用しています:

  • gstreamer-1.0-android-universal-1.26.8

醜いプラグインは含まれていません. 私のメイクファイルには次のものが含まれています:

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
Linux での GStream-1 テストがうまく機能する

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. 結論

このケースでは、GStreamer で RTSP を使用する際のいくつかの重要な点を強調しています。:

  • RTSP URL: rtsp://<camera_ip>:554/live
  • UDP ユニキャスト サポートされています; UDP マルチキャストではありません。
  • 問題のあるプラグインを避ける (Linuxのみ)
  • 試す short-header=true 互換性を高めるために
  • Linux のテスト結果は一般的に Android に適用できます

同様の問題が発生した場合, あなたの情報を提供してください GStreamer パイプラインまたはテスト クライアント, 当社のエンジニアリングチームがさらにサポートします.

質問する

← 戻る

ご回答をありがとうございました。 ✨