概述
随着移动互联网的快速发展以及智能终端性能的逐步提高,智能终端间进行实时音视频通讯成为移动互联网发展的一个重要方向。那么如何保证智能终端之间实时音视频数据通讯成为一个很现实的问题。 实际上,实时音视频通讯 = 音视频处理 + 网络传输。包括采集、编码、网络传输、解码、播放等环节。其中采集、编解码和播放属于“音视频处理”是不受网络条件影响的,只受限于编解码算法,播放策略等因素。而网络传输的丢包、抖动和乱序对实时音视频应用的体验影响最为重大,如何解决好这些问题,是个很大的研究课题,好在目前已经存在多种非常成熟的实时音视频数据传输协议,它们已经一定程度解决好了这些问题,而我们要做的就是尽可能多地了解它们,并选择合适的协议用于我们的应用即可。本文将简要介绍这些主流的实时音视频数据传输协议。
RTP 协议
RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。
RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。
RTP 由两个紧密链接部分组成: RTP——传送具有实时属性的数据;RTP 控制协议(RTCP)——监控服务质量并传送正在进行的会话参与者的相关信息。具体协议内容请查IETF的标准文档RFC3550/RFC3551。
RTCP 协议
实时传输控制协议RTCP(Real-time Transport Control Protocol或RTP Control Protocol)是实时传输协议(RTP)的一个姐妹协议。RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在流多媒体会话参加者之间传