3 Protocol Parameters (协议参数)
3 Protocol Parameters (协议参数)
3.1 RTSP Version (RTSP 版本)
[H3.1] 适用, 将 HTTP 替换为 RTSP。
3.2 RTSP URL (RTSP URL)
"rtsp" 与 "rtspu" 方案 (scheme) 用于通过 RTSP 协议引用网络资源。本节定义 RTSP URL 的方案专有语法与语义。
rtsp_URL = ( "rtsp:" | "rtspu:" ) "//" host [ ":" port ] [ abs_path ]
host = <合法的 Internet 主机域名或点分十进制形式的 IP 地址, 见 RFC 1123 第 2.1 节>
port = *DIGIT
abs_path 定义见 [H3.2.1]。
注意, 片段 (fragment) 与查询 (query) 标识符目前尚无明确定义之含义, 其解释留给 RTSP 服务器。
方案 rtsp 要求通过可靠协议 (在 Internet 上为 TCP) 发出命令, 而方案 rtspu 表示不可靠协议 (在 Internet 上为 UDP)。
若端口为空或未给出, 则假定端口为 554。语义为: 所标识的资源可由 RTSP 在 host 上监听该端口的 TCP (方案 "rtsp") 连接或 UDP (方案 "rtspu") 数据包的服务器加以控制, 且该资源的 Request-URI 为 rtsp_URL。
应尽可能避免在 URL 中使用 IP 地址 (见 RFC 1924 [19])。
演示或流由文本形式的媒体标识符标识, 使用 URL 的字符集与转义约定 [H3.2] (RFC 1738 [20])。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 至少八个八位组长, 以增加猜测难度。(见第 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 帧。亦可 MAY 通过备用 "smpte time" 用法支持其他 SMPTE 码 (如 "SMPTE 25")。时间值中 "frames" 字段可取 0 至 29。每秒 30 帧与 29.97 帧之差通过每分钟丢弃前两个帧索引 (值 00 与 01) 处理, 每第十分钟除外。若帧值为零, 可省略。子帧以百分之一帧计量。
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) 表示相对于演示起点的流绝对位置。时间戳由十进制小数组成。小数点左侧可用秒表示, 或用时, 分, 秒表示。小数点右侧表示秒的分数。
演示起点对应 0.0 秒。负值未定义。特殊常量 now 定义为实况事件的当前瞬间, 仅可用于实况事件。
NPT 按 DSM-CC 定义: "直观上, NPT 是观众与节目关联的时钟, 常在录像机上以数字显示。在正常播放模式 (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 (选项标签)
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, 已发表论文, 专利申请, 技术报告, 有文档的源代码或计算机手册;
-
对专有选项, 应提供联系信息 (邮政地址与电子邮件地址);