リアルタイムストリーミングプロトコル

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

リアルタイムストリーミングプロトコルRTSPは)ネットワーク制御であるプロトコルを制御するためのエンターテインメント、通信システムで使用するために設計されたストリーミングメディア サーバをこのプロトコルは、エンドポイント間のメディアセッションを確立および制御するために使用されます。メディアサーバーのクライアントは、再生記録一時停止などのコマンドを発行して、サーバーからクライアント(ビデオオンデマンド)またはクライアントからサーバー(音声録音)へのメディアストリーミングのリアルタイム制御を容易にします。

歴史

RTSPは、RealNetworksNetscape [1]、およびコロンビア大学によって開発されました[2]最初の草案は10月、1996年にIETFに提出されたネットスケーププログレッシブネットワークた後、ヘニングSchulzrinneとからコロンビア大学は、 1996年12月に「RTSP」」( 『RTSPプライム』)を提出した[3] [4] 2つのドラフトインターネットエンジニアリングタスクフォース(IETF)のマルチパーティマルチメディアセッションコントロールワーキンググループ(MMUSIC WG)によって標準化のために統合され、ワー​​キンググループによってさらなるドラフトが公開されました。[5] [6]RTSPの提案された標準は1998年にRFC2326として公開されました。[7] RTSP1.0の代わりとして2016年にRFC7826として公開されたRTSP2.0。RTSP2.0はRTSP1.0に基づいていますが、基本バージョンのネゴシエーションメカニズム以外では下位互換性がなく、「提案された標準」のままです。[8]

RTP

ストリーミングデータの送信自体はRTSPのタスクではありません。ほとんどのRTSPサーバーは、メディアストリーム配信にリアルタイム制御プロトコル(RTCP)と組み合わせてリアルタイムトランスポートプロトコル(RTP)を使用しますただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。たとえば、RealNetworksのRTSPサーバーソフトウェアも、RealNetworks独自のReal Data Transport(RDT)を使用していました。

プロトコルディレクティブ

いくつかの点でHTTPに似ていますが、RTSPはマルチメディア再生の制御に役立つ制御シーケンスを定義ますHTTPはステートレスですが、RTSPにはステートがあります。識別子は、同時セッションを追跡するために必要な場合に使用されます。HTTPと同様に、RTSPはTCPを使用してエンドツーエンド接続を維持します。ほとんどのRTSP制御メッセージはクライアントからサーバーに送信されますが、一部のコマンドは反対方向(つまり、サーバーからクライアント)に送信されます。

ここに示されているのは、基本的なRTSPリクエストです。OPTIONSリクエストなど、いくつかの一般的なHTTPリクエストも利用できます。デフォルトのトランスポート層ポート番号TCPUDPの両方で554 [7]であり、後者が制御要求に使用されることはめったにありません。

オプション

OPTIONSリクエストは、サーバーが受け入れるリクエストタイプを返します。
C-> S:オプションrtsp://example.com/media.mp4 RTSP / 1.0
       CSeq:1
       必須:暗黙の再生
       プロキシ-必須:gzip圧縮されたメッセージ

S-> C:RTSP / 1.0 200 OK
       CSeq:1
       公開:説明、設定、分解、再生、一時停止

DESCRIBE

DESCRIBEリクエストには、RTSP URL(rtsp:// ...)と、処理できる応答データのタイプが含まれています。この応答には、通常、Session Description Protocol(SDP)形式のプレゼンテーションの説明が含まれます。特に、プレゼンテーションの説明には、集約URLで制御されるメディアストリームが一覧表示されます。通常、オーディオストリームとビデオストリームにそれぞれ1つのメディアストリームがあります。メディアストリームのURLは、SDP制御フィールドから直接取得するか、SDP制御フィールドを集約URLに追加することによって取得します。
C-> S:DESCRIBE rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:2

S-> C:RTSP / 1.0 200 OK
      CSeq:2
      コンテンツベース:rtsp://example.com/media.mp4
      コンテンツタイプ:application / sdp
      コンテンツの長さ:460

      m =ビデオ0RTP / AVP 96
      a = control:streamid = 0
      a = range:npt = 0-7.741000
      a = length:npt = 7.741000
      a = rtpmap:96 MP4V-ES / 5544
      a = mimetype:string; "video / MP4V-ES"
      a = AvgBitRate:integer; 304018
      a = StreamName:string; "ヒント付きビデオトラック"
      m = audio 0 RTP / AVP 97
      a = control:streamid = 1
      a = range:npt = 0-7.712000
      a = length:npt = 7.712000
      a = rtpmap:97 mpeg4-generic / 32000/2
      a = mimetype:string; "audio / mpeg4-generic"
      a = AvgBitRate:integer; 65790
      a = StreamName:string; "ヒント付きオーディオトラック"

セットアップ

SETUP要求は、単一のメディアストリームを転送する方法を指定します。これは、PLAYリクエストを送信する前に行う必要があります。リクエストには、メディアストリームのURLとトランスポート指定子が含まれています。この指定子には通常、RTPデータ(オーディオまたはビデオ)を受信するためのローカルポートと、RTCPデータ(メタ情報)用のローカルポートが含まれていますサーバーの応答は通常、選択されたパラメーターを確認し、サーバーの選択されたポートなど、不足している部分を埋めます。集約再生要求を送信する前に、各メディアストリームをSETUPを使用して構成する必要があります。
C-> S:セットアップrtsp://example.com/media.mp4/streamid=0 RTSP / 1.0
      CSeq:3
      トランスポート:RTP / AVP; unicast; client_port = 8000-8001

S-> C:RTSP / 1.0 200 OK
      CSeq:3
      トランスポート:RTP / AVP; unicast; client_port = 8000-8001; server_port = 9000-9001; ssrc = 1234ABCD
      セッション:12345678



C-> S:セットアップrtsp://example.com/media.mp4/streamid=1 RTSP / 1.0
      CSeq:3
      トランスポート:RTP / AVP; unicast; client_port = 8002-8003
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:3
      トランスポート:RTP / AVP; unicast; client_port = 8002-8003; server_port = 9002-9003; ssrc = 1234ABCD
      セッション:12345678

PLAY

PLAYリクエストにより、1つまたはすべてのメディアストリームが再生されます。複数のPLAYリクエストを送信することで、Playリクエストをスタックできます。URLは、集約URL(すべてのメディアストリームを再生するため)または単一のメディアストリームURL(そのストリームのみを再生するため)の場合があります。範囲を指定できます。範囲が指定されていない場合、ストリームは最初から再生されて最後まで再生されます。ストリームが一時停止されている場合は、一時停止された時点から再開されます。
C-> S:PLAY rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:4
      範囲:npt = 5-20
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:4
      セッション:12345678
      RTP-情報:url = rtsp://example.com/media.mp4/streamid=0; seq = 9810092; rtptime = 3450012

一時停止

PAUSEリクエストは、1つまたはすべてのメディアストリームを一時的に停止するため、後でPLAYリクエストで再開できます。リクエストには、集約またはメディアストリームのURLが含まれています。PAUSEリクエストの範囲パラメータは、一時停止するタイミングを指定します。rangeパラメータを省略すると、一時停止は即座に無期限に発生します。
C-> S:一時停止rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:5
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:5
      セッション:12345678

RECORD

このメソッドは、プレゼンテーションの説明に従って、さまざまなメディアデータの記録を開始します。タイムスタンプは、開始時間と終了時間(UTC)を反映しています。時間範囲が指定されていない場合は、プレゼンテーションの説明に記載されている開始時間または終了時間を使用してください。セッションがすでに開始されている場合は、すぐに録音を開始します。サーバーは、記録されたデータを要求URIまたは別のURIのどちらで保存するかを決定します。サーバーがリクエストURIを使用しない場合、レスポンスは201であり、リクエストの状態を記述し、新しいリソースを参照するエンティティと、Locationヘッダーを含む必要があります。
C-> S:レコードrtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:6
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:6
      セッション:12345678

発表

ANNOUNCEメソッドには、次の2つの目的があります。

ANNOUNCEは、クライアントからサーバーに送信されると、要求URLで識別されるプレゼンテーションまたはメディアオブジェクトの説明をサーバーに送信します。サーバーからクライアントに送信されると、ANNOUNCEはセッションの説明をリアルタイムで更新します。新しいメディアストリームがプレゼンテーションに追加された場合(ライブプレゼンテーション中など)、コンポーネントを削除できるように、追加のコンポーネントだけでなく、プレゼンテーションの説明全体を再送信する必要があります。

C-> S:rtsp://example.com/media.mp4 RTSP /1.0を発表
      CSeq:7
      日付:1997年1月23日15:35:06 GMT
      セッション:12345678
      コンテンツタイプ:application / sdp
      コンテンツの長さ:332

      v = 0
      o = mhandley 2890844526 2890845468 IN IP4 126.16.64.4
      s = SDPセミナー
      i =セッション記述プロトコルに関するセミナー
      u = http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
      e = mjh @ isi.edu(マーク・ハンドリー)
      c = IN IP4 224.2.17.12 / 127
      t = 2873397496 2873404696
      a = recvonly
      m = audio 3456 RTP / AVP 0
      m =ビデオ2232RTP / AVP 31

S-> C:RTSP / 1.0 200 OK
      CSeq:7

分解

TEARDOWN要求は、セッションを終了するために使用されます。すべてのメディアストリームを停止し、サーバー上のすべてのセッション関連データを解放します。
C-> S:ティアダウンrtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:8
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:8

GET_PARAMETER

GET_PARAMETER要求は、URIで指定されたプレゼンテーションまたはストリームのパラメーターの値を取得します。応答と応答の内容は実装に任されています。エンティティ本体のないGET_PARAMETERは、クライアントまたはサーバーの活性をテストするために使用できます(「ping」)。
S-> C:GET_PARAMETER rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:9
      コンテンツタイプ:テキスト/パラメータ
      セッション:12345678
      コンテンツの長さ:15

      packet_received
      ジッター

C-> S:RTSP / 1.0 200 OK
      CSeq:9
      コンテンツの長さ:46
      コンテンツタイプ:テキスト/パラメータ

      packet_received:10
      ジッタ:0.3838

SET_PARAMETER

このメソッドは、URIで指定されたプレゼンテーションまたはストリームのパラメーターの値を設定するように要求します。
C-> S:SET_PARAMETER rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:10
      コンテンツの長さ:20
      コンテンツタイプ:テキスト/パラメータ

      barparam:barstuff

S-> C:RTSP / 1.0451無効なパラメータ
      CSeq:10
      コンテンツの長さ:10
      コンテンツタイプ:テキスト/パラメータ

      barparam

リダイレクト

REDIRECT要求は、別のサーバーの場所に接続する必要があることをクライアントに通知します。これには、クライアントがそのURLの要求を発行する必要があることを示す必須のヘッダーLocationが含まれています。リダイレクトがいつ有効になるかを示すパラメータRangeが含まれる場合があります。クライアントがこのURIのメディアの送受信を継続する場合、クライアントは現在のセッションに対してTEARDOWN要求を発行し、指定されたホストで新しいセッションに対してSETUPを発行する必要があります。
S-> C:リダイレクトrtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:11
      場所:rtsp://bigserver.com:8001
      範囲:clock = 19960213T143205Z-

埋め込まれた(インターリーブされた)バイナリデータ

特定のファイアウォール設計およびその他の状況により、サーバーはRTSPメソッドをインターリーブしてデータをストリーミングする必要があります。このインターリーブは、クライアントとサーバーの操作を複雑にし、追加のオーバーヘッドを課すため、必要な場合を除いて、通常は回避する必要があります。インターリーブされたバイナリデータは、RTSPがTCPを介して伝送される場合にのみ使用する必要があります。RTPパケットなどのストリームデータは、ASCIIドル記号(16進数の24)、1バイトのチャネル識別子、カプセル化されたバイナリデータの長さ(ネットワークバイト順のバイナリ、2バイト整数)でカプセル化されます。ストリームデータは、CRLFなしで直後に続きますが、上位層プロトコルヘッダーを含みます。各$ブロックには、1つのRTPパケットなど、1つの上位層プロトコルデータユニットが含まれます。
C-> S:セットアップrtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:3
      トランスポート:RTP / AVP / TCP; interleaved = 0-1

S-> C:RTSP / 1.0 200 OK
      CSeq:3
      日付:1997年6月5日18:57:18 GMT
      トランスポート:RTP / AVP / TCP; interleaved = 0-1
      セッション:12345678

C-> S:PLAY rtsp://example.com/media.mp4 RTSP / 1.0
      CSeq:4
      セッション:12345678

S-> C:RTSP / 1.0 200 OK
      CSeq:4
      セッション:12345678
      日付:1997年6月5日18:59:15 GMT
      RTP情報:url = rtsp://example.com/media.mp4; seq = 232433; rtptime = 972948234

S-> C:$ \ 000 {2バイト長} {"長"バイトデータ、RTPヘッダー付き}
S-> C:$ \ 000 {2バイト長} {"長"バイトデータ、RTPヘッダー付き}
S-> C:$ \ 001 {2バイトの長さ} {"長さ"バイトのRTCPパケット}

レート適応

RTPおよびRTCPを使用するRTSPにより、レート適応の実装が可能になります。[9]

実装

サーバー

多くのCCTV /セキュリティカメラ(IPカメラと呼ばれることもあります)もRTSPストリーミングをサポートしており、特にONVIFプロファイルG、S、Tを使用しています。

クライアント

参考文献

  1. ^ InfoWorld Media Group、Inc。(1998年3月2日)。InfoWorldInfoWorld Media Group、Inc.p。18. ISSN  0199から6649まで
  2. ^ ラファエルオッソ(1999)。新興通信技術ハンドブック:次の10年CRCプレス。NS。42. ISBN 978-1-4200-4962-6
  3. ^ Rao、Anup; ランフィエ、ロブ。「リアルタイムストリーミングプロトコル(RTSP)」tools.ietf.org 2021-02-23を取得
  4. ^ 「RTSPプライム」 HenningSchulzrinneコロンビア大学 http://www.cs.columbia.edu/~hgs/papers/Schu9612_RTSP.ps)1996年12月
  5. ^ シュルツリン、ヘニング; ラオ、アヌプ; ランフィエ、ロブ(1997-02-24)。「リアルタイムストリーミングプロトコル(RTSP)(draft-ietf-mmusic-rtsp-01.txt)」tools.ietf.org 2021-02-23を取得
  6. ^ シュルツリン、ヘニング; ラオ、アヌプ; ランフィエ、ロブ(1998-01-15)。「リアルタイムストリーミングプロトコル(RTSP)(draft-ietf-mmusic-rtsp-08.txt)」tools.ietf.org 2021-02-23を取得
  7. ^ a b RFC 2326、Real Time Streaming Protocol(RTSP)、IETF、1998
  8. ^ シュルツリン、ヘニング; ラオ、アヌプ; ランフィエ、ロブ; ウェスターランド、マグナス; Stiemerling、Martin(2016年12月)。「リアルタイムストリーミングプロトコルバージョン2.0」tools.ietf.org 2021-02-23を取得
  9. ^ サントス、ヒューゴ; クルス、ルイサントス; Nunes、MárioSerafim(2010)、「WebTVのレート適応技術」、WebTVのレート適応技術、コンピュータサイエンス、社会情報通信工学研究所の講義ノート、40、pp。161–168、doi10.1007 / 978 -3-642-12630-7_19ISBN 978-3-642-12629-1
  10. ^ 「YouTubeMobileA Bust!(3GP / RTSPをWM5で動作させる)」クリスデューク2007-06-23 2021年5月29日取得
  11. ^ cURL —変更
  12. ^ 「FFmpegドキュメント」FFmpegプロジェクト。2012年9月11日。セクション20.19 2012年9月11取得

外部リンク