プライベートな連絡先の最初の情報
送料メール:
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰リリース時間⏰: 2024-07-06 12:22:00
この記事を許可なく転送することはできません。 ! !
RTSP、フルネーム Real Time Streaming Protocol
リアルタイム ストリーミング プロトコルは、TCP/IP プロトコル システムのアプリケーション層プロトコルで、コロンビア大学、Netscape、および RealNetworks によって提出された IETF RFC 標準です。
RTSP プロトコルに関する公式文書は RFC2326 です (文書リンク:)RFC2326-リアルタイムストリーミングプロトコル (RTSP)。
RTSPプロトコルの構文と動作を参照します。 HTTP/1.1
は、ISO10646 文字セットと UTF-8 エンコーディングを使用するテキストベースのプロトコルで、RTSP を伝送するトランスポート層プロトコルです。TCP
、デフォルトのポート554
; RTSP-over-HTTP トンネリングの場合、デフォルトの TCP ポートは 8080 で、通常は RTP/RTCP プロトコルと組み合わせて使用され、RTP プロトコルはリアルタイム ストリーム データを送信し、RTCP プロトコルはデータ ストリームの送信を完了します。制御コマンド。
RTPプロトコル: フルネーム
Real-time Transport Protocol
リアルタイム伝送プロトコルは、1996 年に IETF のマルチメディア伝送ワーキング グループによって RFC 1889 で発表されました。 RTP プロトコルは、インターネット経由でオーディオとビデオを配信するための標準パケット形式を詳しく説明します。 UDP プロトコルに基づいて構築されています。
RTCPプロトコル: フルネーム
Real-time Transport Control Protocol
, RTP で使用されるリアルタイム トランスポート コントロール プロトコル。 RTP は偶数番号の UDP ポートを使用し、RTCP は RTP の次のポートである奇数番号のポートを使用します。 RTCP と RTP は連携して動作し、RTP は実際のデータの送信を実装し、RTCP はセッション内の全員に制御パケットを送信します。その主な機能は、RTP によって提供されるサービスの品質に関するフィードバックを提供することです。
RTSP プロトコルと HTTP プロトコルの違い:
RTSP はステートフルであり、そのコマンドは常に順番に送信され、あるコマンドは常に別のコマンドの前に送信される必要がある場合があります。 HTTP はステートレスであり、プロトコルがコマンドを送信した後、接続は切断され、コマンド間に依存関係はありません。
rtsp プロトコルはポート 554 を使用し、http はポート 80 を使用します。
RTSP リクエストはサーバーとクライアントの両方から送信できますが、HTTP リクエストはクライアントからのみ送信できます。
一般的に使用される RTSP メソッドには、OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN、ANNOUNCE、GET_PARAMETER、SET_PARAMETER などがあります。詳細な使用手順は次のとおりです。
OPTIONS
: クライアントは、サーバーがサポートするメソッドをサーバーから取得します。サーバーの状態には影響しません。DESCRIBE
: クライアントは、URL で指定されたメディア オブジェクトの説明をサーバーから取得します。Accept
このフィールドは説明形式を指定します。SETUP
: クライアントはサーバーにセッションを確立して送信の準備を要求します。リクエスト情報には主に送信プロトコルとクライアントのポート番号が含まれます。PLAY
: クライアントは、SETUP で指定されたメカニズムを使用してデータの送信を開始するようにサーバーに能動的に通知します。でRange
このフィールドは、再生の開始時刻と終了時刻を指定します (リアルタイム ストリームの範囲は通常、Range: npt=0.000-
)、複数の PLAY リクエストが到着すると、サーバーは PLAY リクエストをキューに入れ、順番に実行します。つまり、2 番目の PLAY メッセージの処理を続ける前に、最初の PLAY 時間が完了するまで待機する必要があります。PAUSE
: クライアントは、サーバーのメディア ストリーミングを一時的に停止するように要求します。通過できるRange
パラメーターは指定した時点で一時停止します。または、一時停止するストリームを指定することもできます。たとえば、一時停止するオーディオ ストリームを指定すると、再生は無音になります。RECORD
: RECORD は、クライアントが前述の説明に従ってメディア データの記録を開始することをサーバーに通知します。 でtimestamp
フィールドには開始時刻と終了時刻 (UTC) が反映されます。このフィールドが存在しない場合は、メディアの説明の開始時刻または終了時刻が使用されます。 セッションがすでに開始されている場合は、すぐに録音が開始されます。request-URI
次の URI または別の URI。 サーバーがリクエスト URI を使用しない場合、応答は 201 (作成済み) であり、リクエストのステータスを記述し、新しいリソースを参照する Entity ヘッダーと Location ヘッダーが含まれている必要があります。TEARDOWN
: クライアントは、指定された URL ストリームの送信を停止し、関連リソースを解放するように要求します。REDIRECT
: リクエストをリダイレクトするには、サーバーは別のサーバーの場所に接続する必要があることをクライアントに通知します。 これには、クライアントがこの URL に対してリクエストを行う必要があることを示す必須の Location ヘッダーが含まれています。 これには、リダイレクトがいつ有効になるかを示すパラメーター Range が含まれる場合があります。 クライアントがこの URI に対してメディアの送受信を継続したい場合、クライアントは、指定されたホスト上で現在のセッションに対して TEARDOWN リクエストを発行し、新しいセッションに対して SETUP リクエストを発行する必要があります。ANNOUNCE
: クライアントがサーバーに送信するときは、リクエスト URL によって識別されるプレゼンテーションの説明またはメディア オブジェクトをサーバーに送信することを意味します。GET_PARAMETER
:GET_PARAMETER URI で指定された表現またはストリームのパラメーター値を取得するリクエスト。 返信や応答の内容は実装に委ねられます。 エンティティ本体のない GET_PARAMETER は、クライアントまたはサーバーの稼働状態 (「ping」) をテストするために使用できます。SET_PARAMETER
: このメソッドは、デモまたは URL 指定ストリームのパラメータ値の設定を要求します。リクエストにはパラメータを 1 つだけ含めて、特定のリクエストが失敗した理由をクライアントが判断できるようにする必要があります。リクエストに複数のパラメータが含まれている場合、すべてのパラメータを正常に設定でき、サーバーはこのリクエストに対してのみ動作する必要があります。サーバーは、パラメータを同じ値に繰り返し設定できるようにする必要がありますが、パラメータ値を変更することはできません。注: メディア ストリーミング パラメータは、SETUP コマンドを使用して設定する必要があります。ファイアウォールにとって、セットアップ転送パラメータを SETUP に制限することは有益です。上記では合計 11 の RTSP メソッドが紹介されています。SETUP
、PLAY
、TEARDOWN
RTSP プロセスでは 3 つのコマンドが必要であり、他のメソッドは必要ありません。そしてANNOUNCE
、GET_PARAMETER
、SET_PARAMETER
3 つのコマンドはクライアントからサーバーに送信することも、サーバーからクライアントに送信することもできます。他のコマンドはクライアントからサーバーに送信されます。
RTSP には、リクエスト メッセージとレスポンス メッセージの 2 種類のメッセージがあります。リクエストメッセージはクライアントからサーバーに送信されるリクエストメッセージを指し、レスポンスメッセージはサーバーからクライアントへの応答を指します。
RTSP リクエスト メッセージは、リクエスト ライン、リクエスト ヘッダー、リクエスト本文の 3 つの部分で構成されます。このうち、リクエスト行は必須ですが、リクエストヘッダーとリクエストボディは特定の状況に応じてオプションです。
rn
)仕上げる。方法
:上で紹介したRTSP方式です。オプション、説明、セットアップ、再生、一時停止、ティアダウンなどが含まれます。请求URI
: 操作するメディア リソースを通常は rtsp://example.com/path/to/stream の形式で指定します。协议版本
: リクエストが従う RTSP プロトコルのバージョンを示します。通常はRTSP/1.0
またはRTSP/2.0
。OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
RTSP リクエスト メッセージは、ステータス行、応答ヘッダー、応答本文の 3 つの部分で構成されます。このうちステータス行は必須ですが、応答ヘッダーと応答本文は特定の状況に応じてオプションです。
协议版本
: 応答が従う RTSP プロトコルのバージョンを示します。通常は RTSP/1.0 または RTSP/2.0 です。状态码
: リクエストの処理結果を示すために使用される 3 桁の数字 (200、401、500 など)。最初の数字は応答カテゴリを表します。2xx は成功を示し、4xx はクライアント エラーを示し、5xx はサーバー エラーを示します。状态文本
: OK、未承認など、対応するステータス コードの具体的な意味を説明する短いテキスト説明。RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Feb 04 1970 03:25:10 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
v=0
o=- 8913478 1 IN IP4 192.168.3.91
s=LIVE555 Streaming Media v2016.07.19
i=1080
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:1080
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64002A;sprop-parameter-sets=Z2QAKq2EAQwgCGEAQwgCGEAQwgCEO1A8ARPyoA==,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:768
a=rtpmap:97 PCMA/48000/2
a=control:track2
RTSP メッセージの応答ヘッダーには、一般的に使用されるいくつかのフィールドが含まれます。
SETUP
応答で選択すると、クライアントがセッション ID を取得すると、そのセッションの今後の操作要求メッセージにセッション ID が含まれます。例: Session: 4581E0AE;Wireshark を使用して RTSP ストリーミング メディアのネットワーク パケットをキャプチャすると、一般的なプロセスが次のようになります。
1. クライアントが送信するOPTIONS
メソッド、サーバー応答。
2. クライアントが送信するDESCRIBE
メソッド、サーバー応答。
3. クライアントが送信するSETUP
メソッド、サーバー応答。
2. クライアントが送信するPLAY
メソッド、サーバー応答。
2. クライアントが送信するTEARDOWN
メソッド、サーバー応答。
完全なフロー パケットは次のとおりです。
OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Jul 03 2024 14:42:11 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
DESCRIBE rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Jul 03 2024 14:42:11 GMT
Content-Base: rtsp://192.168.3.225/wbc/
Content-Type: application/sdp
Content-Length: 472
v=0
o=- 1720014950032000 1 IN IP4 192.168.3.225
s=LIVE555 Streaming Media v2016.07.19
i=wbc
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:wbc
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKawsaoHgCJ WbgoCCgQ=,aO4xshs=
a=control:track1
SETUP rtsp://192.168.3.225/wbc/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55320-55321
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Jul 03 2024 14:42:11 GMT
Transport: RTP/AVP;unicast;destination=192.168.2.180;source=192.168.3.225;client_port=55320-55321;server_port=6970-6971
Session: 4581E0AE;timeout=65
PLAY rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
Range: npt=0.000-
RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Jul 03 2024 14:42:11 GMT
Range: npt=0.000-
Session: 4581E0AE
RTP-Info: url=rtsp://192.168.3.225/wbc/track1;seq=7880;rtptime=3548171463
TEARDOWN rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Jul 03 2024 14:42:19 GMT
以下では、前のメッセージで使用された各 RTSP メソッドと応答を分析します。
サーバーから利用可能なメソッドを取得します。
クライアントは OPTIONS メソッドを送信し、CSeq
リクエストのシーケンス番号を指定するには、次を使用します。User-Agent
自分自身の代理人を特定する。
サーバーは次を使用してリクエストに応答します。CSeq
どのリクエストに応答しているかを示すには、次を使用します。Date
日付を指定し、Public
提供されるメソッドを指定します。
サーバーから取得rtsp://192.168.3.225:554/wbc
メディア オブジェクトの説明。Accept
このフィールドでは、説明の形式を指定します。
クライアントは DESCRIBE メソッドを送信し、CSeq
リクエストのシーケンス番号を指定するには、次を使用します。User-Agent
エージェントを特定し、Accept
このフィールドでは、記述形式を SDP として指定します。
サーバーはこのリクエストに次のように応答します。 CSeq
どのリクエストに応答しているかを示すには、次を使用します。Date
日付を指定し、Content-Type
コンテンツタイプがSDPであることを示します。Content-Length
コンテンツの長さを指定します。
知らせ:
1. ユーザー名とパスワードを必要とするものについては、サーバーは認証のために DESCRIBE メソッドを処理します。 Authorization 認証情報が伝送されない場合、または認証が失敗した場合、サーバーはエラー番号 401 の応答を返します。クライアントは 401 応答を受信すると、既知のユーザー認証情報に基づいて Authorization を生成し、describe を再度送信する必要があります。認証が成功すると、サーバーは SDP を含む応答情報を返します。
2. サーバーから返された SDP 情報は、後の記事で分析されます。
クライアントはサーバーに対して、セッションを確立して送信の準備をするように要求します。リクエスト情報には主に送信プロトコルとクライアントのポート番号が含まれます。
クライアントは SETUP メソッドを送信し、CSeq
リクエストのシーケンス番号を指定するには、次を使用します。User-Agent
エージェントを特定し、Transport
このフィールドは、許容可能な送信プロトコル RTP/AVP とポートを指定します (ここでは、RTP ポートは 55320、RTCP ポートは 55321)。
サーバーはこのリクエストに次のように応答します。 CSeq
どのリクエストに応答しているかを示すには、次を使用します。Date
日付を指定し、Transport
トランスポート プロトコル RTP/AVP、宛先アドレス、送信元アドレス、クライアント ポート (RTP は 55320、RTCP は 55321)、サーバー ポート (RTP は 6970、RTCP は 6971) を指定します。Session
セッションIDを指定します。
知らせ:
この例では、RTP は UDP プロトコルを通じて送信されますが、場合によっては TCP を通じて送信されます。Transport
フィールドは異なります。それは次のようなものかもしれません。
客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"
RTP/AVP/TCP
この値が表示される場合、RTP ストリームが TCP 経由で送信されることを示します。
interleaved=0-1
streamid を表し、RTP streamid=0 を識別します。
コード ストリームが TCP 経由で送信される場合、RTSP と TCP リンクを共有するため、RTP、RTCP、および RTSP プロトコルを区別するためにヘッダー識別子を追加する必要はありません。ここでは header フィールドが使用され、tcphead セクションは 4 ワードであり、形式は次のとおりです。
| magic number | channel number | embedded data length | data |
magic number
:1バイト固定0x24
、キャラクターです$
、送信されるデータが rtsp プロトコルではないことを示します。
channel number
: 1 バイト、チャネル ID。ストリームのタイプを識別します。これは前述の streamid です。
embedded data length
: ストリームの長さを示す 2 バイト
data
:RTP/RTCPパケットデータを示します。
クライアントは、SETUP で指定されたメカニズムを使用してデータの送信を開始するようにサーバーに能動的に通知します。
クライアントは PLAY メソッドを送信し、CSeq
リクエストのシーケンス番号を指定するには、次を使用します。User-Agent
エージェントを特定し、Session
フィールドにはセッション ID を指定します。Range
このフィールドでは、再生の開始時刻と終了時刻を指定します。
サーバーはこのリクエストに次のように応答します。 CSeq
どのリクエストに応答するかを示します。Date
日付を指定します。Range
このフィールドは、再生の開始時刻と終了時刻を指定します。Session
このフィールドはセッション ID を指定します。RTP-Info
このフィールドには、最初の RTP パケットのシーケンスや rtptime など、送信されるコード ストリームの RTP 情報が記述されます。クライアントはこのフィールドに基づいて逆多重化できます。
クライアントは、指定された URL ストリームの送信を停止し、関連リソースを解放するように要求します。
クライアントは TEARDOWN メソッドを送信し、CSeq
リクエストのシーケンス番号を指定するには、次を使用します。User-Agent
エージェントを特定し、Session
フィールドにはセッション ID を指定します。
サーバーはこのリクエストに次のように応答します。 CSeq
どのリクエストに応答するかを示します。Date
日付を指定してください。
RTSP の応答コンテンツには通常、3 桁の整数の応答コードと理由フレーズが含まれます。このフレーズの目的は、ステータス コードの短いテキスト説明を提供することです。クライアントは理由フレーズを確認したり表示したりする必要はありません。 レスポンスコードの1桁目の違いにより、以下の5つに分類できます。
もちろん、RTSP エラー コードと RTSP メソッドには密接な関係があります。一部のエラーは、特定のメソッドでのみトリガーされる場合があります。詳細なエラー コード情報は次のとおりです。
エラーコード | 理由のフレーズ | 応答方法 |
---|---|---|
100 | 続く | 全て |
200 | 成功 | 全て |
201 | 作成した | 記録 |
250 | ストレージ容量不足 | 記録 |
300 | 複数の選択肢 | 全て |
301 | 永久に移動 | 全て |
302 | 一時的に移動した | 全て |
303 | その他を見る | 全て |
305 | プロキシを使う | 全て |
400 | 要求の形式が正しくありません | 全て |
401 | 許可されていない | 全て |
402 | 支払いが必要 | 全て |
403 | 禁断 | 全て |
404 | 見つかりません | 全て |
405 | 許可されていない方法 | 全て |
406 | 受け付けできません | 全て |
407 | プロキシ認証が必要 | 全て |
408 | リクエストタイムアウト | 全て |
410 | 消えた | 全て |
411 | 必要な長さ | 全て |
412 | 前提条件が失敗しました DESCRIBE | 設定 |
413 | リクエストエンティティが大きすぎます | 全て |
414 | リクエスト URI が長すぎます | 全て |
415 | サポートされていないメディアタイプ | 全て |
451 | 無効なパラメーター | 設定 |
452 | 不正な会議識別子 | 設定 |
453 | 帯域幅が足りない | 設定 |
454 | セッションが見つかりません | 全て |
455 | この状態ではメソッドは無効です | 全て |
456 | ヘッダーフィールドが無効です | 全て |
457 | 無効な範囲 | 遊ぶ |
458 | パラメータは読み取り専用です | パラメータの設定 |
459 | 集計操作は許可されていません | 全て |
460 | 集計操作のみ許可 | 全て |
461 | サポートされていないトランスポート | 全て |
462 | 目的地に到達できません | 全て |
500 | 内部サーバーエラー | 全て |
501 | 実装されていません | 全て |
502 | 不正なゲートウェイ | 全て |
503 | サービスは利用できません | 全て |
504 | ゲートウェイタイムアウト | 全て |
505 | RTSP バージョンはサポートされていません | 全て |
551 | オプションはサポートされていません | 全て |
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁
参照する:
リアルタイムストリーミングプロトコル—RTSP [詳細説明]
RTSP リクエストとレスポンスを最初からマスターする 1
RTSPストリーミングメディアプロトコルの詳細説明