Appendix D: Minimal RTSP implementation (最低限度 RTSP 实现)
Appendix D: Minimal RTSP implementation (最低限度 RTSP 实现)
D.1 Client (客户端)
客户端实现 MUST 能够:
- 生成以下请求: SETUP, TEARDOWN, 以及 PLAY (最小回放客户端) 或 RECORD (最小录制客户端) 之一。若实现 RECORD, 还必须实现 ANNOUNCE。
- 在请求中包含以下头部: CSeq, Connection, Session, Transport。若实现 ANNOUNCE, 还应能包含 Content-Language, Content-Encoding, Content-Length, Content-Type。
- 解析并理解响应中的以下头部: CSeq, Connection, Session, Transport, Content-Language, Content-Encoding, Content-Length, Content-Type。若实现 RECORD, 还必须理解 Location。符合 RTP 的实现还应实现 RTP-Info。
- 理解所收错误码的类别, 若有 end-user (终端用户), 将 4xx 与 5xx 类错误通知用户。若用户明确不希望对某一或全部状态码收到通知, 可放宽通知要求。
- 预期并响应来自服务器的异步请求, 如 ANNOUNCE。这不一定表示须实现 ANNOUNCE 方法, 而是对服务器收到的任何请求 MUST 给出肯定或否定响应。
虽非必须, 以下在本文发布时对与早期实现互操作及作为「良好公民」强烈建议:
- 将 RTP/AVP/UDP 作为有效传输实现。
- 包含 User-Agent 头部。
- 按附录 C 理解 SDP 会话描述。
- 从标准输入, 命令行或其他适合运行环境的方式接受媒体初始化格式 (如 SDP), 作为其他应用 (如 Web 浏览器) 的「辅助应用」。
可能存在与 RTSP 规范贡献者最初设想不同的应用, 上述要求不适用。因此这些建议仅为指南而非严格义务。
D.1.1 Basic Playback (基本回放)
为支持点播媒体流, 客户端 additionally MUST 能够:
- 生成 PAUSE 请求;
- 实现 REDIRECT 方法与 Location 头部。
D.1.2 Authentication-enabled (支持认证)
为访问需要认证的 RTSP 服务器上的媒体演示, 客户端 additionally MUST 能够:
- 识别 401 状态码;
- 解析并包含 WWW-Authenticate 头部;
- 实现 Basic Authentication 与 Digest Authentication。
D.2 Server (服务器)
最小服务器实现 MUST 能够:
- 实现以下方法: SETUP, TEARDOWN, OPTIONS 以及 PLAY (最小回放服务器) 或 RECORD (最小录制服务器) 之一。若实现 RECORD, 还应实现 ANNOUNCE。
- 在响应中包含以下头部: Connection, Content-Length, Content-Type, Content-Language, Content-Encoding, Transport, Public。若实现 RECORD, 还应能包含 Location。符合 RTP 的实现还应实现 RTP-Info。
- 解析并适当响应请求中的以下头部: Connection, Session, Transport, Require。
虽非必须, 以下强烈建议:
- 将 RTP/AVP/UDP 作为有效传输。
- 包含 Server 头部。
- 实现 DESCRIBE 方法。
- 按附录 C 生成 SDP 会话描述。
同样, 对未预见应用上述仅为指南。
D.2.1 Basic Playback
为支持点播媒体流, 服务器 additionally MUST 能够:
- 识别 Range 头部, 若不支持 seek 则返回错误。
- 实现 PAUSE 方法。
此外, 为支持常见用户界面, 对点播媒体服务器强烈建议:
- 包含并解析带 NPT 单位的 Range 头部。建议实现 SMPTE 单位。
- 在媒体初始化信息中包含演示长度。
- 包含从数据相关时间戳到 NPT 的映射。使用 RTP 时可用 RTP-Info 的 rtptime 部分将 RTP 时间戳映射到 NPT。
客户端实现可根据长度信息判断片段是否可 seek, 对无长度信息的片段禁用 seek 相关 UI。演示长度常用于「滑块」进度条与时间轴定位。
RTP 时间戳到 NPT 的映射对滑块正确定位是必要的。
D.2.2 Authentication-enabled
为正确处理客户端认证, 服务器 additionally MUST 能够:
- 在资源需要认证时生成 401 状态码。
- 解析并包含 WWW-Authenticate 头部。
- 实现 Basic Authentication 与 Digest Authentication。