Real Time Streaming Protocol
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
リアルタイム・ストリーミング・プロトコル(Real Time Streaming Protocol, RTSP)は IETF において標準化されたリアルタイム性のあるデータの配布 (ストリーミング) を制御するためのプロトコルである。1998 年 4 月にその最初の版が RFC 2326 として標準化されたが、様々な問題点があることが指摘され、改訂が続けられている。
概要
RTSP はオーディオ、ビデオなどのマルチメディア・データをふくむサーバを遠隔操作するためのプロトコルであり、テープレコーダのように再生、停止、記録 (録音) などの操作ができる (巻き戻しや早送りの機能はない)。SIP (セッション確立プロトコル) とはちがって RTSP においてはサーバとクライアントとが明確に区別され、データの流れは基本的にサーバからクライアントへの一方向であるが、サーバからクライアントに送付する要求も定義されている。すなわち、要求-応答モデルとしてみると、サーバ とクライアントの役割が逆転することもある。
サーバからクライアントへのデータ転送 (RTSP においてはプレゼンテーションとよばれる) には通常Real-time Transport Protocol (RTP) が使用されるが、それに限定されてはいない。RTSP によって制御されるデータのながれに関しては "RTSP セッション" が存在するが、RTSP 自体には、SIP と同様にセッションの概念はない。SIP と同様、RTSP も HTTP (ハイパーテキスト転送プロトコル) に似せてある。RTSP の下位のプロトコルとしては、SIP とはちがって、TCP のように高信頼なプロトコルの使用が前提とされている。ただし、RTSP の改訂にあたっては低信頼なプロトコルを使用できるようにする方向性が示されている。
RTSP がサポートする操作はつぎの3 つである。
- 1. メディアサーバからのメディアのとりだし
RTSP を使用してメディア・データをとりだすことができる。そのきっかけとしてよくあるのは WWW においてメディアへのリンクをクリックすることであり、この場合プレゼンテーションの記述は HTTP によってメディアサーバにあたえられる。
- 2. メディアサーバを会議に参加させること
マルチメディア会議においてメディアを再生したり、会議を記録したりするために RTSP を使用してメディアサーバを会議に参加させることができる。会議自体の制御はたとえば SIP によっておこなわれる。
- 3. メディアをプレゼンテーションにくわえること
RTSP を使用してとくにライブ・プレゼンテーションにおいて、メディアをプレゼンテーションに参加させることができる。 RTSP をあつかうメディアサーバは RTSP セッションの状態を管理する必要がある。
RFC 2326 にはセキュリティに関する記述がわずかしかないが、改訂中の仕様においてはセキュリティやプライバシーを守るための機構についても記述されている。
RTSP における標準的なシーケンス
以下の例は改訂中の仕様から引用したものであり、クライアント C がメディアサーバ V (video.example.com) から映画をうけとるときのシーケンスである。メディア記述は Web サーバ W に格納されている。
C->W: GET /twister.sdp HTTP/1.1 Host: www.example.com Accept: application/sdp
W->C: HTTP/1.0 200 OK Date: 23 Jan 1997 15:35:06 GMT Content-Type: application/sdp v=0 o=- 2890844526 2890842807 IN IP4 192.16.24.202 s=RTSP Session e=adm@example.com m=audio 0 RTP/AVP 0 a=control:rtsp://audio.example.com/twister/audio.en m=video 0 RTP/AVP 31 a=control:rtsp://video.example.com/twister/video
C->A: SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0 CSeq: 1 User-Agent: PhonyClient/1.2 Transport: RTP/AVP/UDP;unicast;client_port=3056-3057
A->C: RTSP/1.0 200 OK CSeq: 1 Session: 12345678 Transport: RTP/AVP/UDP;unicast;client_port=3056-3057; server_port=5000-5001
C->V: SETUP rtsp://video.example.com/twister/video RTSP/1.0 CSeq: 1 User-Agent: PhonyClient/1.2 Transport: RTP/AVP/UDP;unicast;client_port=3058-3059
V->C: RTSP/1.0 200 OK CSeq: 1 Session: 23456789 Transport: RTP/AVP/UDP;unicast;client_port=3058-3059; server_port=5002-5003
C->V: PLAY rtsp://video.example.com/twister/video RTSP/1.0 CSeq: 2 User-Agent: PhonyClient/1.2 Session: 23456789 Range: smpte=0:10:00-
V->C: RTSP/1.0 200 OK CSeq: 2 Session: 23456789 Range: smpte=0:10:00-0:20:00 RTP-Info: url=rtsp://video.example.com/twister/video; seq=12312232;rtptime=78712811
C->A: PLAY rtsp://audio.example.com/twister/audio.en RTSP/1.0 CSeq: 2 User-Agent: PhonyClient/1.2 Session: 12345678 Range: smpte=0:10:00-
A->C: RTSP/1.0 200 OK CSeq: 2 User-Agent: PhonyClient/1.2 Session: 12345678 Range: smpte=0:10:00-0:20:00 RTP-Info: url=rtsp://audio.example.com/twister/audio.en; seq=876655;rtptime=1032181
C->A: TEARDOWN rtsp://audio.example.com/twister/audio.en RTSP/1.0 CSeq: 3 User-Agent: PhonyClient/1.2 Session: 12345678
A->C: RTSP/1.0 200 OK CSeq: 3
C->V: TEARDOWN rtsp://video.example.com/twister/video RTSP/1.0 CSeq: 3 User-Agent: PhonyClient/1.2 Session: 23456789
V->C: RTSP/1.0 200 OK CSeq: 3