分类: 系统运维
2012-06-13 17:18:52
RTP(Real-time Transport Protocol)基于IP网络,定义发发视频和音频的标准包格式。
RTP和RTCP(RTP Control Protocol)一起工作。RTP携带了媒体流,而RTCP用于监控传送统计和服务质量(Quality of Service,QoS)并辅助多个媒体流的同步。RTP的端口号为偶数,而RTCP的端口号比它大一的奇数。
RTP用于端到端的,实时的流数据的传输。它提供抖动(jitter)补偿,以及察觉数据乱序到达。RTP通过IP组播支持到多个地址的传输。
实时多媒体流应用需要及时的信息,为此可以容忍一些包的丢失。这些缺失的包可以使用合适的错误隐藏算法而不被注意。RTP的多数实现都是基于UDP。
除了RTP和RTCP,RTP规范还包含:
1、可选的信号协议,比如H.323和会话初始化协议(Session Initiation Protocol,SIP);
2、可选的媒体描述协议,比如会话描述协议(Session Description Protocol,SDP)。
对每个多媒体流都会有一个会话建立。一个会话包括IP地址以及RTP和RTCP的一对端口。RTP和RTCP通常使用无特权的UDP端口(1024~65535)。
RTCP收集媒体的连接和信息的统计,比如传送的字节数和包数、丢失的包数、抖动以及来回通讯延迟时间。应用可以使用这些信息控制服务质量参数,也许是通过限制流,或使用不同的解编码器。
RTCP本身不提供流加密或认证方法。这些机制可以通过安全实时传输协议(Secure Real-time Transport Protocol,SRTP)实现。
RTCP提供了三种基本功能,用于所有的RTP会话:
1、收集在会话期间媒体分发的质量方面的统计,并把这个数据传送给会话媒体源和其它会话参与者。如果会话在组播网络上执行,那么这允许非侵入式的会话质量的监控。
2、为所有会话参与者提供标准(canonical)终端ID(CNAME)。尽管RTP流的源ID被期望为唯一的,但源ID(SSRC)到终端的瞬间绑定可能在一个会话里会改变。CNAME为各个应用程序的端点都建立一个唯一的ID,并用于第三方的监控。
3、RTCP的报告被期望发给会话的所有参与者,哪怕是涉及上千人的组播会话。通信量会随着参与者数的增加而成比例增长。因此,为避免网络阻塞,协 议必须包含会话带宽管理。这通过动态控制报告传输的频率来完成。RTCP所占用的带宽通常不会超过总会话带宽的5%。此外,25%的RTCP带宽应该为随 时为媒体源预留,以便在很大的会议里新的参与者可以收到发送者的CNAME ID而没有延迟。
4、可选特性,会话控制函数的供应,因为RTCP可以很方便地到达所有参与者,而RTP本身不能。
RTCP有几种不同类型的包:
1、发送者报告(Sender Report,SR):会议里活动的发送者周期性地发送在一段时间间隔内RTP包的发送和接收统计的报告。SR包括一个绝对时间戳(1900/1/1午夜 至今的秒数),允许接收方同步RTP消息。这对于同时传送视频和音频非常重要,因为它们使用独立的相对时间戳。
2、接收者报告(Receive Report,RR):被动参与者向发送者以及其它接收者通知服务质量的报告。
3、源描述(Source Description,SDES):用于为会话参与者发送CNAME项。它也可以用来提供一些额外信息,比如拥有者或源的控制者的名字、邮箱、地址、电话。
4、参与结束(End of participation,BYE):源发送BYE消息来关闭流。它允许终端声明离开一个会议。尽管其它源可以察觉某个源的缺失,但这是一个直接的声明。它对媒体混合也很有用。
5、应用相关的消息(Application-specific Message,APP):允许对RTCP进行应用相关的扩展。