RTSP over TCP インターリーブ チャネルの不一致: RTP/RTCP チャネル マッピングとビデオの問題の修正
RTSP over TCP インターリーブ チャネルの不一致、RTP と RTCP チャネル マッピング、トランスポート ヘッダー、インターリーブ = 0-1、ビデオなし、およびカメラ メディア解析エラーを診断する方法。
RTSP over TCP インターリーブ トランスポートは、UDP RTP がファイアウォール、NAT、VPN、またはクラウド リレー パスによってブロックされている場合によく使用されます。 UDP が失敗するネットワーク経由でもカメラ ストリームを機能させることができます。しかし、それは別の種類の問題、つまりインターリーブされたチャネルの不一致を引き起こします。 RTSPセッションが接続されます。 DESCRIBE は SDP を返します。 SETUP は成功します。 「PLAY」は成功します。メディア バイトは TCP 接続に到着します。その後、クライアントにはビデオ、音声、不明な RTP チャネル、不正なインターリーブ フレーム、または RTP として解析された RTCP パケットが表示されません。
制御チャネルは機能するがメディア解析が失敗する場合、ユーザーは「RTSP over TCP interleaved no video」、「RTP interleaved channel missmatch」、「RTSP interleaved 0-1」、「RTSP TCP Channel Mapping」、および「RTP over RTSP parsing error」を検索します。
重要な証拠は RTSP TCP 接続上の「Transport」ヘッダーと「$」フレームでインターリーブされたデータにあるため、ここでは RTSP Inspector が役に立ちます。
インターリーブトランスポートの意味
UDP トランスポートでは、RTSP 制御は TCP を使用し、RTP/RTCP メディアは別の UDP ポートを使用します。 TCP インターリーブ トランスポートでは、メディア パケットが RTSP TCP 接続内に埋め込まれます。
SETUP 応答には次のものが含まれる場合があります。
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Multiple tracks create more mappings
Video Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Audio Transport: RTP/AVP/TCP;unicast;interleaved=2-3
ここで、クライアントは以下をマッピングする必要があります。
- チャンネル 0: ビデオ RTP
- チャンネル 1: ビデオ RTCP
- チャンネル 2: オーディオ RTP
- チャンネル 3: オーディオ RTCP
オーディオとビデオのセットアップ順序が変更されると、ハードコーディングされた前提が崩れます。メタデータ トラックが追加されると、チャンネルの割り当てが再び変更される可能性があります。
よくある症状
インターリーブされたチャネルの問題は次のようになります。
- RTSP セッションは「PLAY」に達しますが、ビデオは黒いままです。
- RTP バイトが到着しましたが、ペイロード パーサーがそれらを拒否しました。
- RTCP 送信者レポートはメディアとして解析されます。
- オーディオ パケットはビデオ デパケッタイザーに送信されます。
- シーケンス番号は不可能に見えます。
- ペイロード タイプがそのトラックの SDP と一致しません。
- クライアントが「無効な RTP パケット」または「不明なインターリーブ チャネル」を報告します。
ネットワークは大丈夫かもしれません。カメラがメディアを送信している可能性があります。クライアントは間違ったチャネル マッピングを読み取っているだけです。
トランスポートヘッダーが権限を持つ
トラックの順序だけからチャネル マッピングを推測しないでください。各 SETUP に対してカメラから返された Transport ヘッダーを使用します。
トラックごとに、以下を保存します。
- トラック コントロール URL。
- トランスポートモード。
- インターリーブされたチャネルペア。
- SDP からのペイロード タイプ。
- SDP からのメディア タイプ。
次に、受信したインターリーブされたフレームをそのマッピングと比較します。
カメラとプロキシの癖
一部のカメラは一貫性のない動作をします。
- 要求されたインターリーブされたチャネル番号を無視し、独自のチャネル番号を割り当てます。
- 複数のトラックに対して「interleaved=0-1」を返します。
- 予期しないチャネルで RTCP を送信します。
- RTCP は省略されます。
- プロキシは「トランスポート」を書き換えますが、メディア フレームは書き換えません。
これらはまさに、プレーヤーのみのテストがあまりにも多くを隠してしまうケースです。生の RTSP とインターリーブされたフレームの証拠が重要です。
インターリーブチャネルデバッグのチェックリスト
このワークフローを使用します。
- 「DESCRIBE」からSDPをキャプチャします。
- すべてのメディア トラックを識別します。
- すべての「SETUP」リクエストとレスポンスをキャプチャします。
- 「Transport」ヘッダーと「interleaved=」値を記録します。
- チャネル番号を追跡および RTP/RTCP 役割にマッピングします。
- 受信した
$フレームとチャネル バイトを検査します。 - そのトラックの RTP ペイロード タイプを SDP と比較します。
- 予想される奇数チャネルに RTCP が表示されるかどうかを確認します。
- 再接続後にチャネル マッピングが変更されるかどうかを確認します。
- TCP インターリーブ マッピングを理解した後でのみ、UDP をテストしてください。
最終診断
RTSP over TCP インターリーブの問題は、必ずしもネットワークの問題であるとは限りません。メディアが到着してもビデオが表示されない場合は、チャネル マッピングを調べてください。 「トランスポート」ヘッダーは、どのインターリーブ チャネルが各 RTP および RTCP ストリームを伝送するかを定義します。
RTSP Inspector は、RTSP コントロールとインターリーブ メディア フレーミングの両方を公開することで役立ち、「RTSP は接続されるがビデオが表示されない」場合、コーデックやファイアウォールの推測ではなく、チャネル マッピングの問題として診断できます。
<!-- rtsp-localized-evidence-foundation-v1:start -->「RTSP over TCP インターリーブ チャネルの不一致: RTP/RTCP チャネル マッピングとビデオの問題の修正」を再現可能に検証する手順
結論から言うと、黒画面や一つのステータスコードだけでは障害の所在を証明できません。信頼できる診断では、RTSP の要求と応答、合意した Transport、有効な Session、その後の RTP シーケンス番号、タイムスタンプ、RTCP の証拠を一つの時系列につなげます。「RTSP over TCP インターリーブ チャネルの不一致: RTP/RTCP チャネル マッピングとビデオの問題の修正」では表示症状に近い層から調べますが、制御、ネットワーク、デコーダーの問題を混同しないよう同じ記録時刻を使います。
カメラ、ファイアウォール、VMS の設定を変える前に、小さな基準テストを作ります。パスワードを除いた RTSP URL、時刻、パス、要求した Transport、サーバー応答、最初のメディアパケット到着時刻を記録してください。機器が対応する場合は UDP と TCP interleaved を別々に試します。パス、認証情報、Transport を同時に変えると、二回目の成功がどの変更によるものか分かりません。
| 確認層 | 保存する証拠 | 判断する質問 |
|---|---|---|
| RTSP | メソッド、状態、ヘッダー、CSeq、Session | サーバーはその操作を受理したか |
| SDP | control、payload type、clock rate、codec | 期待するトラックが記述されているか |
| Transport | client_port、server_port、interleaved | 両端が同じ経路を使うか |
| RTP | SSRC、sequence、timestamp、marker | メディア単位が説明可能な順序で届くか |
| RTCP | sender report、CNAME、BYE | 時計、識別子、終了を追跡できるか |
| Decoder | SPS/PPS/VPS、packetization mode | 受信 payload で初期化できるか |
「メディアが届かない」と「届くが復号できない」を分けます。SETUP と PLAY が成功しても RTP がなければ、UDP 経路、NAT、ファイアウォール、Transport 応答を調べます。シーケンスの穴は損失または並べ替えを示します。連続した RTP があるのに映像がなければ、payload type、clock rate、フレーム境界、H.264 または H.265 のパラメーターへ進みます。この境界はプレーヤーの一般的なエラーより有用です。
引用できる短い回答はどう書きますか
三文で、最後に成功した操作、最初に失敗した証拠、二つの原因を分ける次の試験を書きます。例は「DESCRIBE、SETUP、PLAY は成功した。通知されたクライアントポートに RTP が届かない。TCP interleaved の再試験で UDP 遮断とメディアパス誤りを分ける」です。応答やパケットなしにカメラやネットワーク全体を原因と断定しません。
再現に必要な最小情報は何ですか
OPTIONS、DESCRIBE、SETUP、PLAY、SDP、Transport 応答、秘密を除いた Session を保存します。RTP は SSRC、最初と最後のシーケンス、clock rate、欠落数、収録時間を記録します。VLC や別 VMS の成否は差分試験として有用ですが、成功したクライアントが全規則を正しく扱う証明ではありません。
サーバーとクライアントのどちらを調べますか
メソッド拒否、存在しない control URL、不一致 Transport、説明のない SSRC や時計変更はサーバー側を調べます。期限切れ nonce の再利用、Session 欠落、ポートを開かない UDP 要求、各 NAL 終端を access unit 終端とみなす処理はクライアント側を調べます。中間経路の問題では、各結論にパケットと時刻を添えます。
報告前に何を確認しますか
新しい接続で再試験し、二つの時系列を最初の相違点まで比較します。パスワードと完全な Authorization 値を削除し、結論を CSeq、sequence、timestamp に結び付けます。関連する RTSP ガイドで周辺手順を確認し、RTSP Inspectorで RTSP ストリームをローカルに試験してください。カメラ映像を公開サービスへアップロードする必要はありません。
<!-- rtsp-localized-evidence-foundation-v1:end -->