Appendix B: Interaction with RTP (与 RTP 的交互)
Appendix B: Interaction with RTP (与 RTP 的交互)
RTSP 允许媒体客户端控制媒体演示的非连续选中片段, 并通过 RTP media layer (RTP 媒体层) [24] 渲染这些流。渲染 RTP 流的媒体层不应受 NPT 跳跃影响。因此 RTP sequence numbers (序列号) 与 RTP timestamps (时间戳) 在 NPT 跳跃之间 MUST 连续且单调。
示例: 假设时钟频率 8000 Hz, 分包间隔 100 ms, 初始序列号与时间戳为零。先播放 NPT 10–15, 再跳到 NPT 18–20。第一段呈现为序列号 0–49, 时间戳 0–39200 的 RTP 分组。第二段为序列号 50–69, 时间戳 40000–55200 的分组。
不能假定 RTSP 客户端可与 RTP media agent (RTP 媒体代理) 通信, 二者可能为独立进程。若 RTP 时间戳显示与 NPT 相同间隙, 媒体代理会认为演示中有停顿。若 NPT 跳跃足够大, RTP 时间戳可能回绕, 媒体代理可能将后续分组误判为刚播放分组的重复。
对某些数据类型, RTSP 层与 RTP 层需紧密集成。上述限制仍然适用。组合 RTSP/RTP 客户端应使用 RTP-Info 字段判断到达的 RTP 分组是在 seek 之前还是之后发送。
对连续音频, 服务器 SHOULD 在开始服务新的 PLAY 请求时设置 RTP marker bit (标记位)。这使客户端能进行 playout delay adaptation (播放延迟适配)。
对 scaling (缩放) (第 12.34 节), RTP 时间戳应对应播放时序。例如以每秒 30 帧录制的视频在 scale 为 2 且 speed (第 12.35 节) 为 1 时, 服务器可丢弃每隔一帧, 仍以每帧 3000 的正常时间戳间隔投递视频分组, 但 NPT 每视频帧增加 1/15 秒。
客户端可通过重定位后到达的第一个分组的 RTP 时间戳值正确显示 NPT。RTP-Info (第 12.33 节) 头的 sequence 参数提供下一分段的首个序列号。