リアルタイムストリーミングプロトコル(RTSP)は、適切なトランスポートプロトコル上でマルチメディアトランスポートストリーム(インタラクティブメディア、ビデオ、オーディオなど)を多重化およびパケット化するために設計されたアプリケーションレベルのネットワークプロトコルです。
RTSPは、エンターテイメントおよび通信システムにおいて、ストリーミングメディアサーバーを制御するために使用されます。
このプロトコルは、エンドポイント間のメディアセッションを確立および制御するために使用されます。
メディアサーバーのクライアントは、再生、録画、一時停止などのコマンドを発行して、サーバーからクライアントへのメディアストリーミング(ビデオオンデマンド)や、クライアントからサーバーへのメディアストリーミング(音声録音)をリアルタイムで制御します。
RTSP はRealNetworks、Netscape、およびコロンビア大学によって開発されました。[ 1 ] [ 2 ] プロトコルの最初のドラフトは、NetscapeとProgressive Networksによって 1996 年 10 月に IETF に提出され、その後、コロンビア大学のHenning Schulzrinneが1996 年 12 月に「RTSP՚」(「RTSP prime」)を提出しました。[ 3 ] [ 4 ] 2 つのドラフトは、インターネット技術タスク フォース(IETF) のマルチパーティ マルチメディア セッション制御ワーキング グループ (MMUSIC WG) によって標準化のために統合され、ワーキング グループによってさらにドラフトが公開されました。[ 5 ] [ 6 ] RTSP は 1998 年に RFC 2326 として公開されました。[ 7 ]
RTSP 2.0は、RTSP 1.0の後継として2016年にRFC 7826として公開されました。バージョン2.0はバージョン1.0をベースにしていますが、(基本的なバージョンネゴシエーションメカニズムを除いて)下位互換性はありません。[ 8 ]
ストリーミングデータの送信自体はRTSPの役割ではありません。ほとんどのRTSPサーバーは、メディアストリーム配信にリアルタイムトランスポートプロトコル(RTP)とリアルタイム制御プロトコル(RTCP)を組み合わせて使用します。ただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。例えば、 RealNetworksのRTSPサーバーソフトウェアは、RealNetworks独自のReal Data Transport(RDT)も使用していました。
RTSPはHTTPといくつかの点で似ていますが、マルチメディア再生の制御に役立つ制御シーケンスを定義します。HTTPはステートレスですが、RTSPはステートを持ち、必要に応じて同時セッションを追跡するために識別子が使用されます。HTTPと同様に、RTSPはTCPを使用してエンドツーエンドの接続を維持します。ほとんどのRTSP制御メッセージはクライアントからサーバーに送信されますが、一部のコマンドは逆方向(つまり、サーバーからクライアント)にも送信されます。
以下に、基本的な RTSP リクエストを示します。OPTIONS リクエストなどの一般的なHTTP リクエストもいくつか使用できます。デフォルトのトランスポート層ポート番号は、 TCP とUDP の両方で554 [ 7 ]ですが、後者は制御リクエストにはほとんど使用されません。
C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 1 必須: implicit-play プロキシ要件: gzipped-messages S->C: RTSP/1.0 200 OK CSeq: 1 公開:説明、セットアップ、撤去、再生、一時停止
rtsp://URLと、処理可能な応答データの種類が含まれます。この応答には、通常セッション記述プロトコル(SDP)形式のプレゼンテーション記述が含まれます。プレゼンテーション記述には、集約URLで制御されるメディアストリームのリストなどが含まれます。通常、オーディオストリームとビデオストリームにはそれぞれ1つのメディアストリームがあります。メディアストリームのURLは、SDP制御フィールドから直接取得するか、集約URLにSDP制御フィールドを追加することで取得します。C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 2 S->C: RTSP/1.0 200 OK CSeq: 2 Content-Base: rtsp://example.com/media.mp4 コンテンツタイプ: application/sdp コンテンツの長さ: 460 m=ビデオ 0 RTP/AVP 96 a=コントロール:streamid=0 a=範囲:npt=0-7.741000 a=長さ:npt=7.741000 a=rtpmap:96 MP4V-ES/5544 a=mimetype:string;"video/MP4V-ES" a=平均ビットレート:整数;304018 a=StreamName:string;"ヒント付きビデオトラック" m=オーディオ 0 RTP/AVP 97 a=コントロール:streamid=1 a=範囲:npt=0-7.712000 a=長さ:npt=7.712000 a=rtpmap:97 mpeg4-generic/32000/2 a=mimetype:string;"audio/mpeg4-generic" a=平均ビットレート:整数;65790 a=StreamName:string;"ヒント付きオーディオトラック"
C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 CSeq: 3 トランスポート: RTP/AVP;ユニキャスト;クライアントポート=8000-8001 S->C: RTSP/1.0 200 OK CSeq: 3 トランスポート: RTP/AVP;ユニキャスト;クライアントポート=8000-8001;サーバーポート=9000-9001;ssrc=1234ABCD セッション: 12345678 C->S: SETUP rtsp://example.com/media.mp4/streamid=1 RTSP/1.0 CSeq: 3 トランスポート: RTP/AVP;ユニキャスト;クライアントポート=8002-8003 セッション: 12345678 S->C: RTSP/1.0 200 OK CSeq: 3 トランスポート: RTP/AVP;ユニキャスト;クライアントポート=8002-8003;サーバーポート=9002-9003;ssrc=1234ABCD セッション: 12345678
C->S: 再生 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
C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 セッション: 12345678 S->C: RTSP/1.0 200 OK CSeq: 5 セッション: 12345678
C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 セッション: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6 セッション: 12345678
ANNOUNCEメソッドには2つの目的があります。
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=オーディオ 3456 RTP/AVP 0 m=ビデオ 2232 RTP/AVP 31 S->C: RTSP/1.0 200 OK CSeq: 7 C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 セッション: 12345678 S->C: RTSP/1.0 200 OK CSeq: 8
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 コンテンツタイプ: text/parameters セッション: 12345678 コンテンツの長さ: 15 受信パケット数 ジッター C->S: RTSP/1.0 200 OK CSeq: 9 コンテンツの長さ: 46 コンテンツタイプ: text/parameters 受信パケット数: 10 ジッター: 0.3838
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 コンテンツの長さ: 20 コンテンツタイプ: text/parameters barparam: バースタッフ S->C: RTSP/1.0 451 無効なパラメータ CSeq: 10 コンテンツの長さ: 10 コンテンツタイプ: text/parameters バルパラム
S->C: RTSP://example.com/media.mp4 RTSP/1.0 にリダイレクトします CSeq: 11 場所: rtsp://bigserver.com:8001 範囲: clock=19960213T143205Z-
RTPパケットなどのストリームデータは、ASCIIドル記号(16進数で24)でカプセル化され、その後に1バイトのチャネル識別子、さらにネットワークバイトオーダーの2バイト整数としてカプセル化されたバイナリデータの長さが続きます。ストリームデータは、CRLFなしで、上位層プロトコルヘッダーを含めて、その直後に続きます。各$ブロックには、上位層プロトコルデータユニット(RTPパケットなど)が正確に1つ含まれています。
C->S: SETUP rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 3 トランスポート: RTP/AVP/TCP;インターリーブ=0-1 S->C: RTSP/1.0 200 OK CSeq: 3 日付: 1997年6月5日 18:57:18 GMT トランスポート: RTP/AVP/TCP;インターリーブ=0-1 セッション: 12345678 C->S: 再生 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バイト長}{"length"バイトのデータ、RTPヘッダー付き} S->C: $\000{2バイト長}{"length"バイトのデータ、RTPヘッダー付き} S->C: $\001{2バイト長}{"length"バイトのRTCPパケット} HTTP 上の RTSP は 1999 年に Apple によって定義されました。[ 9 ] RTP ビデオとオーディオのデータを RTSP コマンド接続 (RFC2326 で定義) にインターリーブし、RTSP コマンド接続を 2 つの HTTP 接続を介して送信します。これらの 1 つは長時間実行される GET 接続であり、もう 1 つは長時間実行される POST 接続です。
この方法はONVIF IPカメラ規格でも使用されており、HTTPSと組み合わせることで、安全で暗号化されたビデオとオーディオを実現できます。
RTSPコマンドメッセージおよびRTPビデオ/オーディオデータを暗号化するには、いくつかの異なる方法があります。
RTSP 2.0(RFC7826)では、いくつかの暗号化方式が定義され、新しいrtsps://URLが導入されています。これらの多くは、RFC2326 RTSP 1.0クライアントおよびサーバーに組み込まれています。
rtsps://URLを使用) - この方法はTLSソケット(デフォルトはポート322)を使用して、RTSPクライアントとRTSPサーバー間の暗号化された接続を確立します。ビデオとオーディオは、次の2つの方法のいずれかで送信できます。 IANA はrtsps://RTSPS 用に URL プレフィックスとポート 322 を予約しています。[ 10 ] 2024 年 9 月現在、HTTPS 上の RTSP はいくつかの ONVIF IP カメラで実装されており、RTSPS ( rtsps://URL を使用) は Axis および Bosch CCTV カメラ、[ 11 ] FFmpeg、GStreamer、MediaMTX、[ 12 ] Ant Media Server [ 13 ]および SharpRTSP [ 14 ]で実装されています。
RTPとRTCPを使用したRTSPは、レート適応の実装を可能にする。[ 15 ]
多くのCCTV /セキュリティカメラ(IPカメラと呼ばれることが多い)は、特にONVIFプロファイルG、S、Tを備えたものなど、RTSPストリーミングもサポートしています。