RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー

DESCRIBE の RTSP 400 Bad Request を修正。Axis/Dahua/Hikvision の不正な形式のカメラ URL、サポートされていないヘッダー、リバース プロキシの問題、認証、実際の診断コマンドを使用したベンダー固有のストリーム パスをカバーします。

rtsp 400 不正なリクエスト, 説明に失敗しました, カメラのURL, IPカメラのトラブルシューティング, rtsp 診断, 不正な形式の rtsp URL

「RTSP/1.0 400 Bad Request」は、カメラが RTSP リクエストを不正な形式として拒否したことを意味します。ネットワークの問題ではありません。コーデックの問題ではありません。これはリクエスト形式の問題であり、カメラが受信した正確なリクエストを確認すれば修正可能です。

簡単な答え: 30 秒のトリアージ

  1. 最初に VLC でテストします。 VLC が動作する場合は、VLC が送信する正確な RTSP リクエストをキャプチャします。失敗したクライアントと比較してください。
  2. URL パスを確認してください。 カメラが異なれば、同じ RTSP ストリームに対してまったく異なるパスが使用されます。あるカメラ ブランドから別のカメラ ブランドに URL をコピーすることが、400 エラーの最大の原因です。
  3. Check URL encoding. Special characters in passwords break RTSP URL parsing. Encode @ as %40, : as %3A, / as %2F.
  4. プロキシの干渉を確認してください。 カメラへの直接 RTSP は機能しますが、プロキシ経由では 400? が返されます。プロキシが RTSP ヘッダーを変更しています。

これらのいずれでも問題が解決しない場合は、以下の詳細なセクションを実行してください。

最初に: カメラが到達可能であることを確認します

RTSP をデバッグする前に、基本的な接続を確認します。

# TCP reachability
nc -zv 192.168.1.100 554

# Or with telnet
telnet 192.168.1.100 554

# RTSP OPTIONS — the simplest RTSP request
# If this fails, the camera isn't speaking RTSP

Camera-specific URL formats

Axis

rtsp://<ip>/axis-media/media.amp
rtsp://<ip>/mpeg4/media.amp
rtsp://<ip>:554/axis-media/media.amp?videocodec=h264

Dahua

rtsp://<user>:<pass>@<ip>:554/cam/realmonitor?channel=1&subtype=0
rtsp://<user>:<pass>@<ip>:554/cam/realmonitor?channel=1&subtype=1
  • subtype=0: main stream
  • subtype=1: sub stream

Generic / ONVIF

rtsp://<ip>:554/stream1
rtsp://<ip>:554/live
rtsp://<ip>:554/h264
rtsp://<ip>:554/h265
rtsp://<ip>:554/profile1/media.smp
rtsp://<ip>/onvif1
rtsp://<ip>/onvif2

Testing with ffmpeg

# Test DESCRIBE only (don't decode)
ffmpeg -rtsp_transport tcp -i "rtsp://user:pass@192.168.1.100:554/stream1" -t 1 -f null -

# 正確な RTSP 交換を示す詳細な出力
ffmpeg -loglevel debug -rtsp_transport tcp -i "rtsp://..." -t 1 -f null - 2>&1 | grep -E "説明|設定|応答"

URL エンコード: サイレント 400 トリガー

WRONG: rtsp://admin:pa@ss@192.168.1.100/stream1
       parser sees: user=admin, pass=pa, host=ss@192.168.1.100

RIGHT:  rtsp://admin:pa%40ss@192.168.1.100/stream1
       parser sees: user=admin, pass=pa@ss, host=192.168.1.100

Full diagnostic decision tree

RTSP returns 400 Bad Request
│
├─ Is port 554 reachable?
│  ├─ NO → Fix network/firewall. Not an RTSP issue.
│  └─ YES → Continue
│
├─ Does VLC play the same URL?
│  ├─ YES, VLC works → Capture VLC's exact request. Compare with your client.
│  │   Differences in headers, URI format, or auth will point to the fix.
│  └─ NO, VLC also fails → Problem is in the URL or camera config
│
├─ Check the URL path
│  ├─ Wrong manufacturer format → Use correct format for your camera brand
│  ├─ Query parameters missing → Add required parameters (channel, subtype)
│  └─ Path contains unencoded special chars → URL-encode credentials
│
├─ Check DESCRIBE headers
│  ├─ Missing Accept: application/sdp → Add it
│  ├─ Extra HTTP headers (via proxy) → Remove proxy from RTSP path
│  └─ Malformed Authorization → Fix Digest auth parameters
│
├─ Check CSeq and RTSP syntax
│  ├─ Missing CSeq → Add sequential CSeq header
│  ├─ Wrong RTSP version → Use RTSP/1.0
│  └─ CRLF formatting wrong → Ensure \r\n line endings
│
└─ Still failing?
   ├─ Try ONVIF discovery to get the correct RTSP URL
   ├─ Check camera firmware version (older firmware may have stricter parsing)
   └─ Test with a known-working RTSP client as baseline

リバースプロキシ: 隠れた 400 の原因

HTTP リバース プロキシを介した RTSP は脆弱です。 HTTP 用に設計されたプロキシでは、次のことが可能です。

  1. HTTP 固有のヘッダー (Host、X-Forwarded-For、User-Agent) を挿入します。
  2. リクエストURIを書き換える
  3. TCP 接続動作をバッファリングして変更する
  4. RTSP の永続的接続モデルを妨害する

プロキシ干渉の症状:

  • RTSP をカメラに直接送信: 機能します
  • プロキシ経由の RTSP: 400 Bad Request
  • カメラのログに、直接フローに存在しない余分なヘッダーを含む「不正なリクエスト」が表示される

修正: RTSP トラフィックのプロキシをバイパスするか、RTSP 対応プロキシを使用するか、または RTSP トラフィックを変更せずに渡すようにプロキシを構成します。

認証のエッジケース

ほとんどの認証問題は 401 を返しますが、不正な形式の Authorization ヘッダーは 400 を返す場合があります。

「最初の試行では機能し、再試行では失敗する」パターン:

  1. クライアントが認証されていない DESCRIBE を送信する
  2. カメラはダイジェスト チャレンジ (レルム、ノンス) を含む 401 を返します
  3. クライアントはダイジェスト応答を計算します
  4. クライアントは、Authorization ヘッダーを含む認証された DESCRIBE を送信します
  5. カメラは 400 を返します

これは、ダイジェスト応答の計算が間違っている場合に発生します。つまり、ダイジェストの計算で使用された URI が実際のリクエスト URI と一致しないか、ノンスが古いか、パスワード内の特殊文字がハッシュ化前に正しくエンコードされていなかった場合に発生します。

確認: Authorization ヘッダー内のリクエスト URI を、回線上の実際のリクエスト URI と比較します。ダイジェスト認証では、URI はハッシュの一部です。文字ごとに一致しない場合 (エンコーディングを含む)、応答は無効になります。

カメラが壊れたばかりのとき

一部のカメラにはバグのある RTSP 実装があります。上記をすべて確認しても 400 が得られる場合:

  1. ファームウェアのアップデートを確認する
  2. メーカー独自のクライアント ソフトウェアでテストする
  3. 代替の検出およびストリーミング パスとして ONVIF を試してください
  4. カメラが独自のアプリでは動作するが、標準に準拠した RTSP クライアントでは動作しない場合、カメラの RTSP スタックは非準拠です。

カメラのベンダーにバグを報告してください。正確な RTSP DESCRIBE リクエストとレスポンスを含めます。適切な RTSP 実装では、URL パスに関係なく、有効で整形式のリクエストに対して 400 を返すことはなく、404 を返す必要があります。

<!-- rtsp-localized-evidence-foundation-v1:start -->

「RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー」を再現可能に検証する手順

結論から言うと、黒画面や一つのステータスコードだけでは障害の所在を証明できません。信頼できる診断では、RTSP の要求と応答、合意した Transport、有効な Session、その後の RTP シーケンス番号、タイムスタンプ、RTCP の証拠を一つの時系列につなげます。「RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー」では表示症状に近い層から調べますが、制御、ネットワーク、デコーダーの問題を混同しないよう同じ記録時刻を使います。

カメラ、ファイアウォール、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 --><!-- multilingual-blog-closeout:start -->

直接回答と受け入れ境界

「RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー」への短い答えは次のとおりです。DESCRIBE の RTSP 400 Bad Request を修正。Axis/Dahua/Hikvision の不正な形式のカメラ URL、サポートされていないヘッダー、リバース プロキシの問題、認証、実際の診断コマンドを使用したベンダー固有のストリーム パスをカバーします。 この文は、すべての入力、デバイス、プロジェクト、環境に対する保証ではなく、検証すべき結果として扱います。完了した結果には、開始状態、正確な操作、目に見える出力、RTSP Inspector で作業が終わったと判断する条件が記録されています。

証拠を起点にした操作手順

プロジェクト全体を変更する前に、小さく再現可能なケースから始めます。アプリのバージョン、OS、入力またはデバイスの識別情報、重要な設定、期待結果を記録します。一つの操作だけを実行し、最初の予期しない変化を保存し、可能なら既知の正常ケースと比較します。複数の設定を同時に変えると、問題を作った条件や直した条件が分からなくなります。

確認点 1:RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー

「RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。

確認点 2:DESCRIBE の RTSP 400 Bad Request を修正。Axis/Dahua/Hikvision の不正な形式のカメラ URL、サポートされていないヘッダー、リバー

「DESCRIBE の RTSP 400 Bad Request を修正。Axis/Dahua/Hikvision の不正な形式のカメラ URL、サポートされていないヘッダー、リバース プロキシの問題、認証、実際の診断コマンドを使用したベンダー固有のストリーム パスをカバーします。」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。

確認点 3:簡単な答え: 30 秒のトリアージ

「簡単な答え: 30 秒のトリアージ」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。

確認点 4:最初に: カメラが到達可能であることを確認します

「最初に: カメラが到達可能であることを確認します」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。

確認点 5:Camera-specific URL formats

「Camera-specific URL formats」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。

確認点 6:Axis

「Axis」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。

確認点 7:Dahua

「Dahua」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。

確認点 8:Generic / ONVIF

「Generic / ONVIF」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。

確認点 9:Testing with ffmpeg

「Testing with ffmpeg」では、製品の判断と、OS、ハードウェア、元ファイル、権限、作業手順の境界を分けます。原因を決める前に、どの層が証拠を出したか確認します。近くで起きた症状だけを根本原因として報告しないためです。

確認点 10:URL エンコード: サイレント 400 トリガー

「URL エンコード: サイレント 400 トリガー」は、保存、書き出し、または再度開いた結果が観察した状態と一致してから完了にします。一時的な UI 表示も役立ちますが、再利用できる証拠の方が強い判断材料です。残る制限も記録します。

受け入れマトリクス

確認点 残す証拠 合格条件
RTSP 400 不正なリクエストの修正: DESCRIBE の失敗、不正な形式のカメラ URL、およびヘッダー エラー 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる
DESCRIBE の RTSP 400 Bad Request を修正。Axis/Dahua/Hikvision の不正な形式のカメラ URL、サポートされていないヘッダー、リバース プロキシの問題、認証、実際の診断コマンドを使用したベンダ 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる
簡単な答え: 30 秒のトリアージ 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる
最初に: カメラが到達可能であることを確認します 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる
Camera-specific URL formats 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる
Axis 開始状態、一つの操作、結果状態 別の担当者が同じ結果を再現できる

失敗の分離、復旧、引き継ぎ

最初に失敗した境界で停止します。元データ、プロジェクト、セッション、キャプチャを保存し、破壊的な編集前に複製し、一回の実験では一つの変数だけを変えます。複数変更後に全手順をやり直して結果が変わっても、理由は説明できません。

証拠がないことと、存在しない証拠を分けます。空の画面は、入力、範囲、フィルター、権限、デバイス、時間帯、プロジェクト状態の誤りでも起こります。decoder、編集、レポート、書き出しを解釈する前に、取得または読み込み経路を証明します。

引き継ぎ前に成果物を再度開き、先頭、判断点、末尾を確認します。バージョン、環境、設定、期待、観察、最小再現手順を記録します。機密情報を削除またはマスクし、受取人に権限があることも確認します。

質問と回答

最も速く信頼できる開始方法は何ですか?

最小で代表的なケースを使い、期待結果を書き、一つの変数だけを変えます。フィルター、エフェクト、編集、自動化、大きな入力を加える前に、基本経路を確認します。

どの証拠を保存すべきですか?

入力の識別情報、バージョン、環境、設定、正確な操作、最初の異常な変化、最終出力を残します。プロジェクト、セッション、レポート、書き出しは閉じて開き直します。

いつ手順を繰り返しますか?

アプリ、OS、driver、firmware、モデル、入力、手順の変更が結果に影響し得る場合です。以前に合格したケースを変更せず、比較基準として残します。

いつ引き継ぎ可能になりますか?

権限のある別の人が入力を特定し、操作を繰り返し、同じ結果を確認し、残る制限を理解し、未記録のローカル状態なしで成果物を開ける時です。

関連ガイド

次の同一言語ページは、このトピックの正規所有者を変えずに隣接する工程を説明します。

<!-- multilingual-blog-closeout:end -->