目录

实时音视频通讯 = 音视频处理 + 网络传输。包括采集、编码、网络传输、解码、播放等环节

网络传输的丢包、抖动和乱序对实时音视频应用的体验影响最为重大,如何解决好这些问题,是个很大的研究课题,好在目前已经存在多种非常成熟的实时音视频数据传输协议,它们已经一定程度解决好了这些问题,而我们要做的就是尽可能多地了解它们,并选择合适的协议用于我们的应用即可。

RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。

RTP并不保证传输或防止无序传送,也不确定底层网络的可靠性。

实时传输控制协议RTCP(Real-time Transport Control Protocol或RTP Control Protocol)是实时传输协议(RTP)的一个姐妹协议。RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在流多媒体会话参加者之间传输控制数据。RTCP的主要功能是为RTP所提供的服务质量(Quality of Service)提供反馈。

  • 传输字节数
  • 传输分组数
  • 丢失分组数
  • jitter
  • 单向/双向网络延迟

网络应用程序可以利用RTCP所提供的信息试图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据加密或身份认证。SRTCP可以用于此类用途。

RTP和RTCP的关系可以通过一个实时视频传输流程图来理解:

(这里的RR SRshi RTCP的报文类型,RR接受端报告,SR发送端报告)

RTP用于传送具有实时属性的数据,RTCP监控服务质量并传送正在进行的会话参与者的相关信息,具体协议内容查看:(直接下载)

RFC3550中文版.pdf

SRTP与SRTCP协议

安全实时传输协议(Secure Real-time Transport Protocol或SRTP)是在实时传输协议(Real-time Transport Protocol或RTP)基础上所定义的一个协议。

主要功能:为实时传输协议的数据提供加密、消息认证、完整性保护和重放保护。

由爱立信开发,并作为作为RFC3711发布。

安全实时传输协议同样也有一个伴生协议,它被称为安全实时传输控制协议(Secure RTCP或SRTCP);安全实时传输控制协议为实时传输控制协议提供类似的与安全有关的特性,就像安全实时传输协议为实时传输协议提供的那些一样。

具体协议内容查看:标准文档RFC3711

百度安全验证 https://baijiahao.baidu.com/s?id=1679149960481292081&wfr=spider&for=pc

RTSP协议

Real Time Streaming Protocol,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。

RTSP提供了一个可扩展框架,使实时数据,如音视频的受控、点播成为可能。

数据源则包括了现场数据和存储在剪辑中的数据。

协议目的:控制多个数据发送连接,为选择发送通道:UDP、多播UDP、TCP提供途径,并为基于RTP的发送机制提供方法。

具体协议内容查看:标准文档RFC2326

RTSP 是用来控制声音或者影像的多媒体串流协议,并允许同时多个串流需求控制,传输所用的网络通讯协议并没有明确定义,服务器可以自行选择TCP或UDP来传送串流内容,语法和运作和HTTP1.1类似,但是并不强调时间同步,所以能够容忍网络延迟。

如果允许同时多个串流需求控制,除了可以降低服务端的网络用量,更进而支持多方视讯会议。由于与HTTP1.1的运作方式相似,所以代理服务器proxy的cache功能同样适用于RTSP。RTSP同时具有重定向功能,可以根据实时负载情况转换提供服务的服务器,以避免过大的负载集中于同一个服务器而造成延迟。

RTSP和RTP的关系

RTP不像http和ftp可以完整地下载整个影视文件,它是以固定地比特率在网络上发送数据,客户端也是按照这种速度观看影视文件,当影视画面播放过后就不可以再重复播放,除非重新向服务器端要求数据。

RTSP与RTP最大的区别在于:RTSP是一种双向实时数据传输协议,它允许客户端向服务端发送请求,如回放、快进、倒退等操作。RTSP可基于RTP来传输数据,还可以选择TCP、UDP、组播UDP等通道来传送数据,具有很好的扩展性。它是一种与http协议类似的网络应用层协议。

下面例子:

服务器端实时采集、编码端发送两路视频、客户端接收并显示两路视频。

客户端不必对视频数据做任何回放、倒退等操作,可直接采用UDP+RTP+组播实现。

RTMP/RTMPS协议

RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音视频、数据传输开发的开放协议。

它有三种变种:

1、工作再TCP之上的明文协议,使用1935端口

2、RTMP封装在HTTP请求之中,可以穿越防火墙

3、RTMPS类似RTMP,但是使用的是HTTPS连接

MMS协议

MMS(Microsoft Media Server Protocol),微软媒体服务器协议,用来访问并流式接收windows 媒体服务器中的.asf文件的一种协议。

MMS协议用于访问windows media发布点上的单播内容。MMS是连接Windows Media 单播服务的默认方法。

HLS协议

HTTP Live Streaming (HLS)是苹果基于HTTP实现的流媒体传输协议,可实现流媒体的直播和点播,主要应用在IOS系统,为IOS设备提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不过它的分段非常小。

相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议,HLS直播最大的不同在于,直播客户端获取到的不是一个完整的数据流。

HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPG-TS)格式,而客户端则不断地下载并播放这些小文件,因为服务端总是会将最新地直播数据生成新的小文件,这样客户端只要不断地按顺序播放从服务器获取到的文件,就实现了直播。

由此观之,HLS是以点播的技术方式来实现直播,由于数据通过HTTP协议传输,所以完全不用考虑防火墙or代理的问题,而且由于分段文件的时长很短,客户端可以很快地选择和切换码率,以适应不同带宽条件下的播放。不过由于采用这种方式,回导致它的延迟会高于一般的流媒体直播协议。

它的技术关键点总结如下: