ストリーム中の RTP SSRC 変更: カメラの再起動、ストリーム ソースの変更、シーケンスのリセット、およびデコーダーの不具合のデバッグ
RTSP カメラ ストリームの RTP SSRC の変更、シーケンス番号のリセット、タイムスタンプの不連続、カメラ エンコーダーの再起動、フェイルオーバー ストリーム、およびデコーダーの不具合を診断する方法
RTP SSRC は、RTP ストリームの同期ソースを識別します。 RTSP セッションの途中で変更されると、フリーズ、ブラック フレーム、オーディオ/ビデオの非同期、ビデオの破損、パケット損失アラーム、または突然のデコーダ リセットが発生する場合があります。検索フレーズには、「RTP SSRC が変更されました」、「カメラの再起動後に RTSP ストリームがフリーズする」、「RTP シーケンス番号のリセット」、「RTP タイムスタンプの不連続性」、「カメラ ストリーム ソースがストリーム中に変更されました」などがあります。
これは通常のプレーヤーの質問ではないため、RTSP Inspector が役立ちます。重要な証拠は、RTP パケット ヘッダー、RTCP 送信者レポート、SDP トラック メタデータ、シーケンス番号、およびタイムスタンプに存在します。
SSRC の意味
RTP では、各メディア ソースに SSRC 値があります。通常、ビデオ トラックとオーディオ トラックは異なる SSRC 値を持ちます。受信機は、ペイロード タイプ、シーケンス番号、タイムスタンプ、および RTCP レポートとともに SSRC を使用して、ストリームの連続性を維持します。
SSRC が変更された場合、受信機は次のいずれかを判断する必要があります。
- 正当な新しい同期ソース。
- カメラエンコーダの再起動。
- 別のエンコーダへのフェイルオーバー。
- ファームウェアのバグ。
- NAT/プロキシの書き換えの問題。
- 新しいストリームが同じセッションに誤って混合されました。
すべての SSRC 変更をパケット損失として扱うことは誤解を招きます。
よくある症状
SSRC の変更により、いくつかの目に見える症状が生じる可能性があります。
- ビデオが数秒間フリーズします。
- デコーダに「無効な NAL ユニット」または「参照フレームがありません」と表示される。
- 再生は続行されますが、遅延が大幅に増加します。
- オーディオとビデオが乖離してしまう。
- クライアントは突然のパケット損失をログに記録します。
- RTCP ジッターのスパイク。
- シーケンス番号は小さい値から始まります。
- RTP タイムスタンプは前後にジャンプします。
重要な問題は、シーケンスとタイムスタンプの連続性と同時にメディア ID が変更されたかどうかです。
カメラの再起動またはエンコーダの再起動
多くの IP カメラは、RTSP TCP 接続を閉じずにエンコーダ パイプラインを再起動します。コントロール セッションはまだ生きているように見えますが、その下の RTP が変更されます。
証拠:
- 同じRTSPセッションIDが継続します。
- RTP SSRC が変更されます。
- RTP シーケンス番号が再開されます。
- RTP タイムスタンプが再起動またはジャンプします。
- RTCP 送信者レポートのマッピングが変更されます。
- 再起動後すぐにキーフレームが表示されるか、デコーダは次の IDR フレームまで待機します。
次のキーフレームの後にストリームが回復した場合は、ネットワーク パケット損失ではなく、エンコーダの再起動が問題である可能性があります。
フェイルオーバーと負荷分散されたメディア ソース
一部のシステムは、ゲートウェイを介して RTSP ストリームを中継します。ゲートウェイが上流のカメラ、録画パイプライン、またはトランスコーダー ワーカーを切り替えると、受信機は新しい SSRC を認識する可能性があります。
これは次の場合に発生する可能性があります。
- NVR のリストリーミング。
- クラウドカメラブリッジ。
- RTSP プロキシ フェイルオーバー。
- マルチエンコーダカメラファームウェア。
- 冗長ストリームサーバー。
- メディア アフィニティを保持しないロード バランサ。
SSRC の変更がバックエンド フェールオーバーと相関がある場合、修正はリレー層に属する可能性があります。
シーケンス番号のリセット
RTP シーケンス番号は 16 ビットで、通常は同じストリーム内のパケットごとに 1 ずつ増加します。 SSRC の変更と同時にリセットが行われることが予想されます。 SSRC の変更を伴わないリセットの方が疑わしいです。
役立つ比較:
- 古い SSRC シーケンス範囲。
- 新しい SSRC の最初のシーケンス番号。
- 前後のペイロード タイプ。
- 前後のタイムスタンプ。
- 境界付近のマーカー ビットの動作。
- リセット後にキーフレームが表示されるかどうか。
多くの人が「RTP シーケンス番号のリセット」を検索し、パケット損失を想定していますが、本当の原因はソースの置き換えであるため、この区別は SEO にとって重要です。
タイムスタンプの不連続性
RTP タイムスタンプはメディア クロックに従います。ビデオの場合、これは通常 90 kHz です。タイムスタンプが逆方向にジャンプすると、受信機でフレームがドロップされたり、順序が正しく変更されたりする可能性があります。大きく前方にジャンプすると、ジッター バッファーの動作が変化する可能性があります。
SSRC が変更された場合、受信機がそれを新しいソースとして扱う場合、タイムスタンプの不連続性は許容される可能性があります。 SSRC が変化しない場合、タイムスタンプの不連続性は送信側クロックの破損を示していることがよくあります。
RTSP インスペクターには、タイムスタンプの境界が明確に表示されるはずです。
old SSRC: sequence 43120, timestamp 88210000
new SSRC: sequence 210, timestamp 3000
RTCP sender report changes
Questions to answer:
Decoder behavior
After an SSRC change, check:
Debug checklist
Use this workflow:
Final diagnosis
<!-- rtsp-localized-evidence-foundation-v1:start -->「ストリーム中の RTP SSRC 変更: カメラの再起動、ストリーム ソースの変更、シーケンスのリセット、およびデコーダーの不具合のデバッグ」を再現可能に検証する手順
結論から言うと、黒画面や一つのステータスコードだけでは障害の所在を証明できません。信頼できる診断では、RTSP の要求と応答、合意した Transport、有効な Session、その後の RTP シーケンス番号、タイムスタンプ、RTCP の証拠を一つの時系列につなげます。「ストリーム中の RTP SSRC 変更: カメラの再起動、ストリーム ソースの変更、シーケンスのリセット、およびデコーダーの不具合のデバッグ」では表示症状に近い層から調べますが、制御、ネットワーク、デコーダーの問題を混同しないよう同じ記録時刻を使います。
カメラ、ファイアウォール、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 -->