メインコンテンツまでスキップ

Appendix A: RTSP Protocol State Machines (RTSP プロトコル状態機械)

Appendix A: RTSP Protocol State Machines (RTSP プロトコル状態機械)

RTSP クライアントとサーバーの状態機械は, RTSP セッション初期化から終了までのプロトコル動作を記述する。

状態はオブジェクト単位で定義される。オブジェクトは stream URL (ストリーム URL) と RTSP session identifier (セッション識別子) で一意に識別される。複数ストリームから成る RTSP presentation (プレゼンテーション) を示す aggregate URLs (集約 URL) を用いる任意のリクエスト/応答は, すべてのストリームの個別状態に影響する。例: プレゼンテーション /movie に /movie/audio と /movie/video があるとき, 次のコマンドは両方の状態に影響する。

PLAY rtsp://foo.com/movie RTSP/1.0 CSeq: 559 Session: 12345678

この例は URL でのストリーム表現やファイルシステムとの関係の標準を意味しない。第 3.2 節を参照。

OPTIONS, ANNOUNCE, DESCRIBE, GET_PARAMETER, SET_PARAMETER はクライアントまたはサーバー状態に影響しないため状態表に含まれない。

A.1 Client State Machine (クライアント状態機械)

クライアントは次の状態を取りうる。

Init: SETUP を送信し応答待ち。

Ready: SETUP 応答を受信済み, または Playing 中に PAUSE 応答を受信。

Playing: PLAY 応答を受信済み。

Recording: RECORD 応答を受信済み。

一般にクライアントはリクエストへの応答受信で状態遷移する。PAUSE のように将来の時刻/位置で効力を持つリクエストもあり, 状態もそれに応じて変わる。オブジェクトに明示 SETUP が不要な場合 (マルチキャストグループ経由など), 状態は Ready から始まり, Ready と Playing のみとなる。要求レンジ終端に達したときも Playing/Recording から Ready へ戻る。

「next state」列は成功応答 (2xx) 後の状態。3xx なら Init, 4xx は不変。各状態で表にないメッセージは, 上記の状態に影響しないメッセージを除きクライアントが送信してはならない (MUST NOT)。サーバーからの REDIRECT は 3xx リダイレクト受信と同等。

state message sent next state after response Init SETUP Ready TEARDOWN Init Ready PLAY Playing RECORD Recording TEARDOWN Init SETUP Ready Playing PAUSE Ready TEARDOWN Init PLAY Playing SETUP Playing (changed transport) Recording PAUSE Ready TEARDOWN Init RECORD Recording SETUP Recording (changed transport)

A.2 Server State Machine (サーバー状態機械)

サーバーは次の状態を取りうる。

Init: 初期, まだ有効な SETUP なし。

Ready: 最後の SETUP が成功し応答送信済み, または再生後最後の PAUSE が成功し応答送信済み。

Playing: 最後の PLAY が成功し応答送信済み, データ送信中。

Recording: メディアデータを録画中。

一般にサーバーはリクエスト受信で状態遷移する。Playing または Recording でユニキャストのとき, 定義間隔 (既定 1 分) クライアントから RTCP や RTSP などの健全性情報がなければ MAY Init に戻りセッションを解体。Session 応答ヘッダー (12.37) で別タイムアウトを宣言しうる。Ready のとき 1 分超 RTSP リクエストがなければ MAY Init に戻る。PAUSE 等は将来効力を持ちうる。クライアント要求レンジ終了で Playing/Recording から Ready へ。

REDIRECT は Range ヘッダーで時刻が指定されない限り即時有効。

明示 SETUP が不要なら状態は Ready から始まり Ready と Playing のみ。

「next state」列は 2xx 送信後の状態。3xx で Init, 4xx は不変。

state message received next state Init SETUP Ready TEARDOWN Init Ready PLAY Playing SETUP Ready TEARDOWN Init RECORD Recording Playing PLAY Playing PAUSE Ready TEARDOWN Init SETUP Playing Recording RECORD Recording PAUSE Ready TEARDOWN Init SETUP Recording