RTSP と UDP: RTSP は接続できるのにビデオが真っ暗になる理由 — RTP がファイアウォール、NAT、および VPN によってブロックされる
コントロールは接続しているが UDP RTP がブロックされている場合に RTSP がビデオを表示しない問題を修正しました。ファイアウォール ルール、RTSP プロトコル ポート、NAT トラバーサル、VPN RTP 損失、TCP インターリーブ フォールバック、およびカメラの UDP ソース ポートをカバーします。
最も重大な RTSP 問題の 1 つは、説明するのは簡単です。カメラは接続されていますが、ビデオが表示されません。多くの場合、RTSP 制御は TCP 上で機能しますが、UDP RTP メディア パケットはクライアントに到達しません。ユーザーにはログインの成功、SDP、さらには「PLAY 200 OK」が表示され、その後タイムアウトが表示されます。 「RTSP は接続されるがビデオが表示されない」、「RTP UDP がブロックされたファイアウォール」、「RTSP は VPN 経由ではなく LAN 上で動作する」、「カメラ RTSP NAT ビデオなし」、「RTSP TCP インターリーブ修正」などの検索はすべて、このレイヤー分割を示しています。
RTSP は 1 つのデータ ストリームではありません。コントロール チャネルとメディア チャネルは、異なるトランスポート パスを使用できます。コントロール チャネルが機能していてもメディア パスに障害が発生すると、プレーヤーにコーデックの障害と同じ黒い画面が表示されることがあります。パケット証拠は異なります。
RTSP Inspector は、RTSP 制御の成功と RTP メディア配信を区別するため便利です。
コントロールが機能するからといってメディアが機能するわけではない
通常の UDP RTP フローは次のようになります。
- クライアントはカメラ ポート 554 への RTSP TCP 接続を開きます。
- クライアントは「DESCRIBE」を送信します。
- カメラは SDP を返します。
- クライアントは UDP クライアント ポートを使用して「SETUP」を送信します。
- カメラは UDP サーバー ポートを返します。
- クライアントは「PLAY」を送信します。
- カメラは RTP パケットをクライアントの UDP ポートに送信します。
手順 1 ~ 6 が成功し、手順 7 が失敗した場合、ストリームは RTSP ログインの問題ではありません。メディアパスの問題です。
トランスポートヘッダーによりポート計画が明らかになります
「SETUP」リクエストには以下が含まれる場合があります。
Transport: RTP/AVP;unicast;client_port=50000-50001
The camera may answer:
Transport: RTP/AVP;unicast;client_port=50000-50001;server_port=6970-6971
カメラはクライアントの UDP ポートに RTP/RTCP を送信する必要があります。ファイアウォールはそのトラフィックを許可する必要があります。 NAT デバイスはそれを正しくマッピングする必要があります。 VPN はそれを実行する必要があります。そうでない場合、メディアが沈黙している間、RTSP 制御は正常に見える可能性があります。
一般的なファイアウォールと NAT の障害
一般的な原因は次のとおりです。
- ファイアウォールは TCP 554 を許可しますが、UDP RTP ポート範囲をブロックします。
- NAT は RTSP ポートを転送しますが、RTP ポートは転送しません。
- カメラが予期しない送信元ポートから RTP を送信します。
- クライアントは、カメラから到達できないプライベート UDP ポートをアドバタイズします。
- VPN は TCP を許可しますが、UDP をドロップします。
- 企業のファイアウォールが高頻度の UDP ポートをブロックします。
- カメラは二重 NAT の背後にあります。
- RTP パケットが間違ったインターフェイスに返されます。
多くの場合、目に見える症状は「PLAY 後にビデオが表示されない」です。
TCP インターリーブがよく機能する理由
RTSP over TCP インターリーブは、RTSP TCP 接続内で RTP と RTCP を伝送します。これにより、個別の UDP ピンホールが回避されます。
UDP モードが失敗し、TCP インターリーブが機能する場合、それはコーデックとカメラがおそらく正常であるという強力な証拠です。問題はおそらく UDP メディア トランスポートです。
ただし、TCP インターリーブには、チャネル マッピングを含む独自の解析要件があります。これは UDP パスの問題の回避策であり、すべてのレイヤーが正常であることを証明するものではありません。
RTCP はパスの証明に役立ちます
RTP がブロックされているが RTCP が到着している場合、またはその逆の場合は、ポート ペアを検査します。一部のファイアウォールは 2 つの方向を異なる方法で処理します。 RTCP 受信レポートには、メディアが部分的に到着した場合のパケット損失とジッターも表示される場合があります。
記録:
- RTP パケット数。
- RTCP パケット数。
- RTP 送信元 IP とポート。
- RTP 宛先 IP とポート。
- シーケンス番号のギャップ。
- 「PLAY」から最初のパケットまでの時間。
デバッグチェックリスト
このワークフローを使用します。
- RTSP
DESCRIBE、SETUP、およびPLAYが成功したことを確認します。 - 「トランスポート」ヘッダーとクライアント/サーバーの UDP ポートを検査します。
- 「PLAY」後にRTPパケットが到着するかどうかを確認します。
- RTCPパケットが到着するかどうかを確認します。
- LAN テストと VPN/WAN テストを比較します。
- TCP インターリーブ トランスポートをテストします。
- UDP RTP ポート範囲のファイアウォール ルールを確認してください。
- NAT ポート転送と送信元ポートの動作を確認します。
- クライアントがアドバタイズした到達可能な UDP ポートを確認します。
- RTP ペイロードが実際に到着するまで、コーデックをデバッグしないでください。
最終診断
RTSP は接続しているが UDP RTP がブロックされている場合、メディアが到着しない間もカメラに完全に到達できます。修正は、UDP ポートの到達可能性、NAT の動作、ファイアウォール ポリシー、VPN ルール、または TCP インターリーブへの切り替えにあります。
RTSP Inspector は、RTSP 制御シーケンスと RTP パケットの証拠を一緒に表示することで役立ち、「ビデオなし」が具体的なトランスポート診断になります。