Appendix C: Use of SDP for RTSP Session Descriptions (RTSP セッション記述への SDP の使用)
Appendix C: Use of SDP for RTSP Session Descriptions (RTSP セッション記述への SDP の使用)
Session Description Protocol (SDP, RFC 2327 [6]) は RTSP でストリームやプレゼンテーションを記述するのに用いられうる。用途はアクセス手段と符号化の指定に限定される。
aggregate control (集約制御): 1 台以上のサーバーのストリームから成るが集約制御できないプレゼンテーション。記述は通常 HTTP など非 RTSP で取得されるが, ANNOUNCE でも受信しうる。
non-aggregate control (非集約制御): 1 台のサーバー上の複数ストリームで集約制御可能なプレゼンテーション。記述は通常 URL への DESCRIBE 応答で返るか ANNOUNCE で受信する。
本付録は HTTP 等で取得した SDP ファイルが RTSP セッション動作をどう決めるか, および DESCRIBE 応答の SDP をクライアントがどう解釈すべきかを述べる。SDP では, 同時レンダリングすべき複数メディアストリームと代替集合 (例: 異なる言語の 2 つの音声) を人的指示なしには区別できない。
C.1 Definitions (定義)
本付録の「session-level」「media-level」および他のキー名・値は SDP (RFC 2327 [6]) の定義に従う。
C.1.1 Control URL
属性 a=control: は control URL を伝える。セッションとメディアの両方で使用。個別メディアではそのストリーム制御用 URL。セッション層では aggregate control 用 URL。
例: a=control:rtsp://example.com/foo
相対または絶対 URL 可。RFC 1808 [25] の規則に従う。実装は次の順でベース URL を探す: (1) RTSP Content-Base (2) Content-Location (3) リクエスト URL。値が * のみなら空の埋め込み URL として全体ベース URL を継承。
C.1.2 Media streams
m= はストリームを列挙。指定ストリームは適切に同期レンダリングされる想定。ユニキャストではポートは推奨; クライアントは SETUP に含め推奨を無視してよい。偏好なしならサーバーは SHOULD ポート 0。
例: m=audio 0 RTP/AVP 31
C.1.3 Payload type(s)
m= で指定。RFC 1890 [1] の静的型なら追加情報不要。動的型なら rtpmap で内容を指定。encoding name は RFC 1890 5,6 節または SDP の X- 接頭辞実験符号化。コーデック固有パラメータは fmtp に。新規登録は RFC 1890 [1] の手順。RTP AV プロファイルに合わないメディア型は新プロファイルを作り m= でプロファイル名を使うことを推奨。
C.1.4 Format-specific parameters
fmtp で伝達。構文は対象符号化に依存。パケット化間隔は ptime。
C.1.5 Range of presentation
a=range は保存セッションの総時間範囲 (ライブは t と r から推論)。メディア長が異ならない限りセッション層。単位を先に, 次に値。単位と値は 3.5–3.7 節。
例: a=range:npt=0-34.4368, a=range:clock=19971113T2115-19971113T2203
C.1.6 Time of availability
t= は集約・非集約の両方で適切な開始/終了を MUST 含む。集約時サーバーは SHOULD 記述が有効と保証する終了時刻と DESCRIBE 受信時刻以前の開始を示す。MAY 0,0 で常時利用。非集約時は SDP 意味に沿った実際の利用期間を反映し, Web ページ寿命などに依存しない。
C.1.7 Connection Information
SDP の c= は宛先。オンデマンドユニキャストや一部マルチキャストでは宛先はクライアントが SETUP で指定。固定宛先でなければ c= は適切なヌル値。IP4 では 0.0.0.0。
C.1.8 Entity Tag
任意 a=etag は記述版を識別 (クライアントに不透明)。SETUP で If-Match (12.22) に含め, 現在の記述と一致するときのみセッション確立を許可。例: a=etag:158bb3e7c7fd62ce67f12b533f06b83a
o= は同機能を持つが同一コンテンツで SDP 以外の記述型をサポートするサーバーに制約を課す。
C.2 Aggregate Control Not Available
集約制御なしで複数メディア節がある場合, 各節 MUST a=control: で URL を指定。
例:
v=0 o=- 2890844256 2890842807 IN IP4 204.34.34.32 s=I came from a web page t=0 0 c=IN IP4 0.0.0.0 m=video 8002 RTP/AVP 31 a=control:rtsp://audio.com/movie.aud m=audio 8004 RTP/AVP 3 a=control:rtsp://video.com/movie.vid
制御 URL の位置から, クライアントは audio.com と video.com に別々の RTSP 制御セッションを確立する。
非 RTSP で配信しても SDP に完全なメディア初期化情報を含めることを推奨 (DESCRIBE で詳細を取る指示がないため)。
C.3 Aggregate Control Available
サーバーが複数ストリームをまとめて制御。メディア層 a=control: でストリーム URL, セッション層で集約制御用リクエスト URL。相対 URL は C.1.1 に従い絶対化。
ストリームが 1 つならメディア層 a=control: を省略可。2 本以上なら各メディア節 MUST 独自の a=control。
例:
v=0 o=- 2890844256 2890842807 IN IP4 204.34.34.32 s=I contain i=
クライアントは単一 RTSP セッションで rtsp://example.com/movie/trackID=1 と rtsp://example.com/movie/trackID=2 でビデオとオーディオを SETUP し, rtsp://example.com/movie/ で映画全体を制御する。