3 Protocol Parameters (プロトコルパラメータ)
3 Protocol Parameters (プロトコルパラメータ)
3.1 RTSP Version (RTSP バージョン)
[H3.1] を適用しますが, HTTP を RTSP に置き換えます。
3.2 RTSP URL (RTSP URL)
スキーム "rtsp" および "rtspu" は, RTSP プロトコル経由でネットワークリソースを参照するために用いられます。本節では, RTSP URL のスキーム固有の構文と意味を定義します。
rtsp_URL = ( "rtsp:" | "rtspu:" ) "//" host [ ":" port ] [ abs_path ]
host = <RFC 1123 セクション 2.1 で定義される, 合法な Internet ホストドメイン名またはドット付き 10 進 IP アドレス>
port = *DIGIT
abs_path は [H3.2.1] で定義されます。
フラグメントおよびクエリ識別子は, 現時点では明確な意味を持たず, 解釈は RTSP サーバーに委ねられることに注意してください。
スキーム rtsp は, コマンドを信頼できるプロトコル (Internet 上では TCP) 経由で発行することを要求し, スキーム rtspu は非信頼プロトコル (Internet 上では UDP) を示します。
ポートが空または与えられていない場合, ポート 554 を仮定します。意味は, 識別されたリソースは, そのホストの当該ポートで TCP (スキーム "rtsp") 接続または UDP (スキーム "rtspu") パケットを待ち受けるサーバーによって RTSP で制御でき, リソースの Request-URI は rtsp_URL である, ということです。
可能な限り URL 内での IP アドレスの使用は避けるべきです (RFC 1924 [19] 参照)。
プレゼンテーションまたはストリームは, URL (RFC 1738 [20]) の文字セットおよびエスケープ規則 [H3.2] を用いたテキスト形式のメディア識別子によって識別されます。URL はストリームまたはストリームの集合, すなわちプレゼンテーションを指し得ます。したがって, セクション 10 に記述されるリクエストは, プレゼンテーション全体またはプレゼンテーション内の個々のストリームのいずれにも適用し得ます。一部のリクエストメソッドはストリームにのみ適用でき, プレゼンテーションには適用できず, その逆もあることに注意してください。
例: RTSP URL
rtsp://media.example.com:554/twister/audiotrack
は, プレゼンテーション "twister" 内のオーディオストリームを識別し, ホスト media.example.com のポート 554 への TCP 接続上で発行された RTSP リクエストによって制御できます。
また, RTSP URL
rtsp://media.example.com:554/twister
は, オーディオおよびビデオストリームから構成され得るプレゼンテーション "twister" を識別します。
これは, URL でストリームを参照する標準的な方法があることを意味するものではありません。プレゼンテーション記述が, プレゼンテーション内の階層関係および個々のストリームの URL を定義します。プレゼンテーション記述は, ストリームに "a.mov", プレゼンテーション全体に "b.mov" といった名前を付けてもよいでしょう。
RTSP URL のパス成分はクライアントにとって不透明であり, サーバー上の特定のファイルシステム構造を暗示しません。
この分離により, URL のスキームを置き換えるだけで, 非 RTSP のメディア制御プロトコルでもプレゼンテーション記述を用いることができます。
3.3 Conference Identifiers (会議識別子)
会議識別子は RTSP にとって不透明であり, 標準的な URI エンコード方式 (すなわち LWS は % でエスケープ) で符号化されます。任意のオクテット値を含み得ます。会議識別子は MUST グローバルに一意でなければなりません。H.323 では, conferenceID 値を用います。
conference-id = 1*xchar
会議識別子は, RTSP セッションが, メディアサーバーが参加しているマルチメディア会議からパラメータを取得できるようにするために用いられます。これらの会議は, 本仕様の範囲外のプロトコル, 例えば H.323 [13] または SIP [12] によって作成されます。RTSP クライアントが明示的にトランスポート情報を提供する代わりに, 例えばメディアサーバーに会議記述の値を使うよう求める, といった使い方をします。
3.4 Session Identifiers (セッション識別子)
セッション識別子は任意の長さの不透明な文字列です。線形空白 (LWS) は URL エスケープしなければなりません。セッション識別子は MUST ランダムに選ばれ, 推測を困難にするため MUST 少なくとも 8 オクテットの長さでなければなりません (セクション 16 参照)。
session-id = 1*( ALPHA | DIGIT | safe )
3.5 SMPTE Relative Timestamps (SMPTE 相対タイムスタンプ)
SMPTE 相対タイムスタンプは, クリップの先頭からの相対時間を表します。相対タイムスタンプは, フレーム単位のアクセス精度のために SMPTE タイムコードとして表現されます。タイムコードの形式は hours:minutes:seconds:frames.subframes で, 原点はクリップの先頭です。デフォルトの smpte 形式は "SMPTE 30 drop" で, フレームレートは秒間 29.97 フレームです。別の "smpte time" の用法により, 他の SMPTE コード (例: "SMPTE 25") を MAY サポートしてもよいでしょう。時間値の "frames" フィールドは 0 から 29 の値を取り得ます。秒間 30 フレームと 29.97 フレームの差は, 10 分ごとを除き毎分の最初の 2 つのフレームインデックス (値 00 および 01) を落とすことで扱います。フレーム値がゼロの場合, 省略してもよいでしょう。サブフレームは 1 フレームの 1/100 で計測されます。
smpte-range = smpte-type "=" smpte-time "-" [ smpte-time ]
smpte-type = "smpte" | "smpte-30-drop" | "smpte-25" ; 他のタイムコードを追加可
smpte-time = 1*2DIGIT ":" 1*2DIGIT ":" 1*2DIGIT [ ":" 1*2DIGIT ] [ "." 1*2DIGIT ]
例: smpte=10:12:33:20- smpte=10:07:33- smpte=10:07:00-10:07:33:05.01 smpte-25=10:07:00-10:07:33:05.01
3.6 Normal Play Time (ノーマルプレイタイム)
Normal play time (ノーマルプレイタイム, NPT) は, プレゼンテーションの先頭からのストリームの絶対位置を示します。タイムスタンプは 10 進の小数で構成されます。小数点の左は秒, または時, 分, 秒のいずれかで表せます。小数点の右は秒の分数を表します。
プレゼンテーションの先頭は 0.0 秒に対応します。負の値は定義されません。特殊な定数 now はライブイベントの現在の瞬間として定義され, ライブイベントにのみ用いてよいでしょう。
NPT は DSM-CC に従って定義されます: "直感的に, NPT は視聴者が番組に関連付ける時計であり, しばしば VCR にデジタル表示されます。ノーマル再生モード (scale = 1) では NPT は通常どおり進み, 高速早送り (大きな正の scale) ではより速く進み, 早戻し (大きな負の scale) では減少し, 一時停止モードでは固定されます。NPT は (論理的に) SMPTE タイムコードと等価です。" [5]
npt-range = ( npt-time "-" [ npt-time ] ) | ( "-" npt-time )
npt-time = "now" | npt-sec | npt-hhmmss
npt-sec = 1*DIGIT [ "." *DIGIT ]
npt-hhmmss = npt-hh ":" npt-mm ":" npt-ss [ "." *DIGIT ]
npt-hh = 1*DIGIT ; 任意の正の数
npt-mm = 1*2DIGIT ; 0-59
npt-ss = 1*2DIGIT ; 0-59
例: npt=123.45-125 npt=12:05:35.3- npt=now-
構文は ISO 8601 に適合します。npt-sec 記法は自動生成向けに, npt-hhmmss 記法は人間の読者向けに最適化されています。"now" 定数により, クライアントは保存版や時間遅延版ではなくライブフィードを受け取るよう要求できます。絶対時刻もゼロ時刻もこの場合には適切ではないため, これが必要です。
3.7 Absolute Time (絶対時刻)
絶対時刻は ISO 8601 タイムスタンプで表し, UTC (GMT) を用います。秒の分数を示してもよいでしょう。
utc-range = "clock" "=" utc-time "-" [ utc-time ]
utc-time = utc-date "T" utc-time "Z"
utc-date = 8DIGIT ; < YYYYMMDD >
utc-time = 6DIGIT [ "." fraction ] ; < HHMMSS.fraction >
1996 年 11 月 8 日 UTC 14 時 37 分 20.25 秒の例:
19961108T143720.25Z
3.8 Option Tags (オプションタグ)
オプションタグは, RTSP の新しいオプションを指定するために用いられる一意の識別子です。これらのタグは Require (セクション 12.32) および Proxy-Require (セクション 12.27) ヘッダーフィールドで用いられます。
構文:
option-tag = 1*xchar
新しい RTSP オプションの作成者は, オプションに逆ドメイン名の接頭辞を付ける (例: 発明者が "foo.com" に連絡できる機能なら "com.foo.mynewfeature" が適切), または Internet Assigned Numbers Authority (IANA) に新オプションを登録するべきです。
3.8.1 Registering New Option Tags with IANA (IANA への新オプションタグの登録)
新しい RTSP オプションを登録する際, 次の情報を提供すべきです:
-
オプションの名称と説明。名称は任意の長さでよいが, SHOULD 二十文字を超えないことが望ましい。名称は MUST NOT 空白, 制御文字, 句点を含んではならない。
-
オプションに対する変更支配権が誰にあるかの指示 (例: IETF, ISO, ITU-T, 他の国際標準化団体, コンソーシアム, 特定の企業または企業群);
-
利用可能であれば更なる説明への参照, 例えば (優先順) RFC, 公表論文, 特許出願, 技術報告書, 文書化されたソースコード, コンピュータマニュアル;
-
独自オプションについては, 連絡先 (郵便および電子メールアドレス);