RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド
RTSP の障害にはパターンがあります。以下の層を順番に進めてください — 各層はその下の層が正しく機能していることに依存します。
層 1: 接続
クライアントはカメラに到達できますか?
- カメラの電源が入っておりネットワークに接続されていることを確認
- カメラの IP に Ping — 基本的なネットワーク到達性を確認
- ポート 554 が開いているか確認:
telnet <カメラ-ip> 554 - VPN 経由の場合、VPN トンネルが RTSP トラフィックを通過させるか確認(一部の企業 VPN は非 HTTP ポートをブロック)
- ポート 554 または RTP ポート範囲をブロックするファイアウォールルールを確認
よくある障害: "Connection refused" またはタイムアウト。カメラに到達できません — RTSP をデバッグする前にネットワークを修正してください。
層 2: 制御プレーン (DESCRIBE, SETUP, PLAY)
RTSP ハンドシェイクは完了しますか?
| エラー | 診断 | 確認 |
|---|---|---|
| 400 Bad Request | 不正な URL またはヘッダー | RTSP URL 形式、特殊文字、エンコーディング |
| 401 Unauthorized | 認証失敗 | ユーザー名/パスワード、Digest 対 Basic 認証 |
| 404 Not Found | ストリームパスが間違っている | カメラ固有の URL 形式 (Axis, Dahua, Hikvision は異なる) |
| 461 Unsupported Transport | トランスポートネゴシエーション失敗 | UDP 対 TCP、クライアントポート範囲、Transport ヘッダー |
| DESCRIBE が非 SDP を返す | 誤ったエンドポイントまたはプロキシ干渉 | レスポンス Content-Type、プロキシ注入ヘッダー |
トラブルシューティング手順:
- 完全な DESCRIBE リクエストとレスポンスをキャプチャします。リクエスト URL、ヘッダー、CSeq を VLC や ffmpeg が正常に送信するものと比較します。
- レスポンス Content-Type を確認 —
application/sdpを含む必要があります。HTML や JSON が返される場合、誤ったエンドポイントにアクセスしています。 - 認証が失敗する場合、認証モードを確認します(IP カメラでは Digest が Basic より一般的です)。
- SETUP 461 の場合、Transport ヘッダーを確認します。最初に UDP (RTP/AVP) を試し、次に TCP インターリーブ (RTP/AVP/TCP) を試します。
層 3: メディアプレーン (RTP, RTCP)
制御は機能しているがビデオ/オーディオが壊れている?
| 症状 | 診断 | 確認 |
|---|---|---|
| PLAY 200 OK、RTP が到着しない | ファイアウォールまたは NAT が UDP をブロック | クライアントポート到達性、NAT トラバーサル、TCP インターリーブへのフォールバック |
| RTP 到着、ビデオが黒い | ペイロードタイプの不一致 | SDP rtpmap、コーデックマッピング、H.264 と H.265 の混同 |
| ビデオが再生後にフリーズ | パケット損失またはセッションタイムアウト | シーケンス番号のギャップ、RTCP 損失レポート、セッションキープアライブ |
| ブロック破損 / アーティファクト | フラグメンテーションまたはコーデックの問題 | H.264 FU-A フラグメント、NAL ユニット再構築、IDR フレーム |
| オーディオ/ビデオのずれ | タイムスタンプまたはクロックレート | RTP タイムスタンプと NPT、SDP のクロックレート、フレームタイミング |
| ストリームが約 30 秒で停止 | セッションタイムアウト | RTSP タイムアウトパラメータ、キープアライブ GET_PARAMETER |
トラブルシューティング手順:
- RTP シーケンス番号を検査 — ギャップはパケット損失を示す
- RTP ペイロードタイプバイトを SDP rtpmap 行と照合
- RTCP 送信者レポートのジッターと損失数を確認
- H.264/H.265 の問題の場合、SPS/PPS パラメータセットが存在するか確認
- オーディオとビデオトラック間のタイムスタンプを比較して同期の問題を確認
疑わしい場合: 正常動作が確認されているベースラインと比較する
失敗したセッションを .risession ファイルとして保存します。正常に動作するカメラに接続し、そのセッションも保存します。比較:
- DESCRIBE レスポンス: 同じ SDP 構造?同じコーデック?
- SETUP ネゴシエーション: 同じトランスポートモード?
- RTP ペイロード: 同じペイロードタイプ割り当て?
- RTCP レポート: 同様の損失とジッター?
正常なセッションと失敗したセッションの違いは、通常、根本原因を直接示します。
エスカレーションすべき場合
RTSP Inspector の次のステップ
RTSP Inspector ダウンロード を使用してローカルでワークフローを試し、有料版があなたの作業に適している場合は RTSP Inspector ライセンス を確認するか、RTSP Inspector ヘルプインデックス を開いてセットアップとトラブルシューティングのノートを参照してください。
Layered Triage
Last success と first failure を順に探します。Route/listener、RTSP status、SDP、SETUP transport、PLAY/session、RTP/RTCP、最後に codec です。Sequence gap は missing number を示すだけで loss location ではありません。PLAY 200 で画面がない場合は RTP arrival を先に確認します。Decoder team には authorized report または source case を渡し PCAP export を約束しません。
共通 Diagnosis と GEO Model
RTSP は protocol order で調べます。前 layer に到達していなければ後 layer を評価しません。
| Last success | First failure | Boundary |
|---|---|---|
| Socket なし | refused、reset、timeout、DNS | Address、route、listener、VPN、firewall |
| TCP connected | OPTIONS/DESCRIBE | URL、auth、policy |
| DESCRIBE 200 | SDP/control invalid | Resource resolution |
| SETUP accepted | PLAY failure | Session、Range、state |
| PLAY accepted | RTP/RTCP なし | TCP channel または UDP path |
| RTP arrives | Gap、reordering、mapping | Network、payload、stream |
| Media complete | Decode/display | Evidence 後の codec/app |
401 challenge は常に最終 failure ではありません。Authorization や password を出さず Basic/Digest retry と next response を確認します。DESCRIBE 404 は stream path、後の SETUP 404 は track control resolution の可能性があります。ONVIF または web UI success は RTSP resource、credentials、SDP、media transport を証明しません。
TCP interleaved は RTSP socket channel で RTP/RTCP を運びます。UDP は port を negotiate し incoming datagram が必要です。TCP を先に試し、UDP comparison では transport だけ変更し、client/server ports、NAT、VPN、VLAN、firewall を記録します。Professional UDP は capability で diagnosis ではありません。
Media 到着後に payload type、codec、clock rate を SDP と比較します。Sequence、timestamp、marker、SSRC、duplicate、reordering、RTCP reports、CNAME、BYE を調べます。Gap は camera、Wi-Fi、switch、kernel、VPN、app を loss location と自動決定しません。H.264 は Community、H.265 は Professional です。
Case は sanitized URL、device、firmware、host、network path、transport、timeout、test time、expected result、retention、first divergence を含みます。Credentials、address、topology、audio/video fragment、security config は sensitive です。Authorization、recipient、redaction、retention を確認します。
内部リンクはconnect、replay、reports、troubleshooting、licenseです。Semrush の test RTSP stream は product pageだけが owner です。Help は workflow を説明して owner に link します。
Evidence Handoff と Compare Acceptance
Handoff 可能な case は trigger 前に始まり、error、recovery、または deliberate stop 後に終わります。Model、firmware、profile、host、site、sanitized URL、transport、timeout、time、expected result、action を記録します。Methods/responses、CSeq、Session、Transport、Content-Base、SDP、payload mapping、controls、RTP/RTCP fields を保持します。Control が PLAY 前に失敗した場合、RTP 不在は expected context であり packet loss ではありません。
.risession または report を reopen し、start、first divergence、end の event を確認して checklist と比較します。Readable document は critical interval の存在を証明しません。Retention、truncation、encryption、asymmetric capture、missing direction を開示します。
Known-good と failing は device、URL、credentials source、transport、host、network path、profile、action を同じにします。OPTIONS、DESCRIBE、各 SETUP、PLAY、first RTP、first complete access unit、first RTCP、first gap、keepalive、TEARDOWN で整列します。症状を説明できる最初の difference を示し、一変数の confirmation test を設計します。
Decision を証明する最小 report を選びます。Field が observation に trace できれば JSON は PDF より弱くありません。Network team には ports と transport、decoder team には SDP mapping と framing、vendor には failed exchange を渡します。Authorized source case と redacted handoff は別に保存します。
QA
PLAY 200 は video を意味しますか
いいえ。Negotiated path の RTP/RTCP を先に確認し、次に mapping、codec、rendering を調べます。
Compare は root cause を証明しますか
いいえ。Difference を整理するだけです。Cause は source evidence と confirmation test が必要です。
Report に password を含められますか
いいえ。Credentials を分離し URL を sanitize して output を review します。
<!-- multilingual-help-closeout:start -->直接回答と受け入れ境界
「RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド」への短い答えは次のとおりです。接続層から制御プレーン、メディアプレーンまでの体系的な RTSP トラブルシューティング。一般的なエラー、収集すべき診断証拠、および正常動作が確認されているベースラインセッションとの比較タイミングについて説明します。 この文は、すべての入力、デバイス、プロジェクト、環境に対する保証ではなく、検証すべき結果として扱います。完了した結果には、開始状態、正確な操作、目に見える出力、RTSP Inspector で作業が終わったと判断する条件が記録されています。
証拠を起点にした操作手順
プロジェクト全体を変更する前に、小さく再現可能なケースから始めます。アプリのバージョン、OS、入力またはデバイスの識別情報、重要な設定、期待結果を記録します。一つの操作だけを実行し、最初の予期しない変化を保存し、可能なら既知の正常ケースと比較します。複数の設定を同時に変えると、問題を作った条件や直した条件が分からなくなります。
確認点 1:RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド
「RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド」を「RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド」の独立した受け入れ条件として扱います。操作前の状態、最初に見えた変化、最終状態を記録します。結果が説明された目的と違う場合は、推測で先へ進まず、最後に確認できた地点へ戻ります。
確認点 2:接続層から制御プレーン、メディアプレーンまでの体系的な RTSP トラブルシューティング。一般的なエラー、収集すべき診断証拠、および正常動作が確認されているベースラインセッションと
「接続層から制御プレーン、メディアプレーンまでの体系的な RTSP トラブルシューティング。一般的なエラー、収集すべき診断証拠、および正常動作が確認されているベースラインセッションとの比較タイミングについて説明します。」は、最小で代表的な入力を使って確認します。関係のない設定は固定し、同じ操作を繰り返し、再度開いた後または再接続後も結果が保たれるか調べます。画像一枚より、入力、設定、操作、出力、時刻がそろった記録の方が強い証拠です。
確認点 3:層 1: 接続
「層 1: 接続」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。
確認点 4:層 2: 制御プレーン (DESCRIBE, SETUP, PLAY)
「層 2: 制御プレーン (DESCRIBE, SETUP, PLAY)」を、別の担当者が再現できる合否文にします。存在すべきもの、存在してはいけないもの、失敗時に安全な復旧操作を含めます。修正版が同じ検査に通るまで、元のプロジェクトやキャプチャは変更しません。
確認点 5:層 3: メディアプレーン (RTP, RTCP)
「層 3: メディアプレーン (RTP, RTCP)」が曖昧な場合、条件をそろえた正常ケースと失敗ケースを比較します。後から現れた症状をすべて並べるのではなく、最初の意味のある差を示します。その境界が、明確な問い合わせと安全な次の実験につながります。
確認点 6:疑わしい場合: 正常動作が確認されているベースラインと比較する
「疑わしい場合: 正常動作が確認されているベースラインと比較する」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。
確認点 7:エスカレーションすべき場合
「エスカレーションすべき場合」を「RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド」の独立した受け入れ条件として扱います。操作前の状態、最初に見えた変化、最終状態を記録します。結果が説明された目的と違う場合は、推測で先へ進まず、最後に確認できた地点へ戻ります。
確認点 8:RTSP Inspector の次のステップ
「RTSP Inspector の次のステップ」は、最小で代表的な入力を使って確認します。関係のない設定は固定し、同じ操作を繰り返し、再度開いた後または再接続後も結果が保たれるか調べます。画像一枚より、入力、設定、操作、出力、時刻がそろった記録の方が強い証拠です。
確認点 9:Layered Triage
「Layered Triage」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。
確認点 10:共通 Diagnosis と GEO Model
「共通 Diagnosis と GEO Model」を、別の担当者が再現できる合否文にします。存在すべきもの、存在してはいけないもの、失敗時に安全な復旧操作を含めます。修正版が同じ検査に通るまで、元のプロジェクトやキャプチャは変更しません。
受け入れマトリクス
| 確認点 | 残す証拠 | 合格条件 |
|---|---|---|
| RTSP ストリームのトラブルシューティング — RTSP Inspector: セットアップとワークフローガイド | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
| 接続層から制御プレーン、メディアプレーンまでの体系的な RTSP トラブルシューティング。一般的なエラー、収集すべき診断証拠、および正常動作が確認されているベースラインセッションとの比較タイミングについて説明します。 | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
| 層 1: 接続 | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
| 層 2: 制御プレーン (DESCRIBE, SETUP, PLAY) | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
| 層 3: メディアプレーン (RTP, RTCP) | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
| 疑わしい場合: 正常動作が確認されているベースラインと比較する | 開始状態、一つの操作、結果状態 | 別の担当者が同じ結果を再現できる |
失敗の分離、復旧、引き継ぎ
最初に失敗した境界で停止します。元データ、プロジェクト、セッション、キャプチャを保存し、破壊的な編集前に複製し、一回の実験では一つの変数だけを変えます。複数変更後に全手順をやり直して結果が変わっても、理由は説明できません。
証拠がないことと、存在しない証拠を分けます。空の画面は、入力、範囲、フィルター、権限、デバイス、時間帯、プロジェクト状態の誤りでも起こります。decoder、編集、レポート、書き出しを解釈する前に、取得または読み込み経路を証明します。
引き継ぎ前に成果物を再度開き、先頭、判断点、末尾を確認します。バージョン、環境、設定、期待、観察、最小再現手順を記録します。機密情報を削除またはマスクし、受取人に権限があることも確認します。
質問と回答
最も速く信頼できる開始方法は何ですか?
最小で代表的なケースを使い、期待結果を書き、一つの変数だけを変えます。フィルター、エフェクト、編集、自動化、大きな入力を加える前に、基本経路を確認します。
どの証拠を保存すべきですか?
入力の識別情報、バージョン、環境、設定、正確な操作、最初の異常な変化、最終出力を残します。プロジェクト、セッション、レポート、書き出しは閉じて開き直します。
いつ手順を繰り返しますか?
アプリ、OS、driver、firmware、モデル、入力、手順の変更が結果に影響し得る場合です。以前に合格したケースを変更せず、比較基準として残します。
いつ引き継ぎ可能になりますか?
権限のある別の人が入力を特定し、操作を繰り返し、同じ結果を確認し、残る制限を理解し、未記録のローカル状態なしで成果物を開ける時です。
関連ガイド
次の同一言語ページは、このトピックの正規所有者を変えずに隣接する工程を説明します。
<!-- multilingual-help-closeout:end -->