RTCP
因为我对全副协定内容没有过多波及,这里只记录跟工夫戳同步相干的,后续有工夫精力再补充
首先还是从 TCP 形式接管的 RTSP 包剖析:
由图能够剖析出,当 channel identifier
是0x01
时,阐明是 RTCP 数据包。
RTCP 数据包格局
该标准定义了几种 RTCP 数据包类型来承载多种管制信息:
SR:发送者报告,用于发送和接管的统计信息
作为沉闷发送者的参与者
RR: 接收者报告,用于接管参与者的统计信息
SDES: 源形容项,包含 CNAME
BYE: 示意参加完结
APP: 特定于应用程序的性能
这个是通用的 RTCP 包格局,理解即可
版本号(V):对于以后版本的 RTP 协定,版本号为 2(截止到本书编纂为止),目前还 没有推出新版本的打算,并且之前的版本并没有宽泛的被应用.
填充(P):填充位示意,所要填充的数据曾经超出了目前所能包容的位数。如果此位 被设置为 1,那么意味着包尾曾经被一个或多个八位字节填充,最初一位八位所填充的 内容示意此包的总数大小。
条目计数(IC):某些包类型中蕴含了一个 list 的条目,可能作为固定的、用于特定类 型的信息的补充。这些条目字段须要标示出包中蕴含的条目标总数(这个字段在不同的 包中有不同的命名办法,这取决于具体如何应用此字段)。每个 RTCP 包最多蕴含 31 个 条目,同时也受到 MTU(maximum transmission unit)的限度。如果须要传输超过 31 个条目标场景,那么应用程序必须生成多个 RTCP 包。Item Count 字段为 0 的时候示意此包中的条目为空(然而并不意味着包中内容为空)。如果不须要 Item count 字段那么此字段能够用于其余的目标。
包类型(PT):此字段标识了传输的包中所携带的信息的类型。在 RTP 的标准中定义了 五种规范数据包类型,未来可能还会定义其余的类型(例如,报告额定统计信息或者传 递其余特定源的信息)。
长度:此字段标识包头之后的内容总长度。因为所有的 RTCP 的数据包的长度必须为 32 位的整数倍,所以这个字段放的是 32 位字的个数,因为如果依照八位字节计算会呈现 此字段和总长度不统一的状况。0 是一个无效长度,示意这个包只蕴含 4 个 8 位字节的包 头(包头字段 IC 在这种状况下也是 0)。
发送端(流媒体服务器)以肯定的频率发送 RTCP SR(Sender Report)
这个包给接收端(例如浏览器), 所以我次要介绍这个类型的 RTCP 包。
SR 包内蕴含一个 RTP 工夫戳 和对应的NTP 工夫戳,能够用 <ntp,rtp> 对做音视频同步。
音视频同步(TODO)
参考文章
- 应用 rtcp 实现音视频同步