网络视频直播平台发展至今,流媒体传输协议在其中扮演着重要角色,甚至直接关乎了视频直播观看的流畅性。我们常见的流媒体传输协议多种多样,例如UDP、RTMP、HLS等,使用较多的则是RTMP协议及HLS协议。但RTMP传输协议占的比重却能达到90%,HLS协议则使用在很多特定的场景下。我们就主要来分析下这二者的不同。
H5直播中的应用
在H5直播开发中,我们可以使用webRTC来实现视频录制,不过webRTC是支持网页浏览器进行实时语音和视频对话的技术,在PC端上的适配比较理想,移动端还是有所欠缺的。这时就要用到HLS协议来实现直播流的播放了,而且iOS和Android都是支持HLS协议的,借助于video标签即可使用。
既然有适配的PC端技术及移动端的HLS协议,H5直播为什么使用的那么少呢?
主要的原因在于使用HLS协议,需要把视频流分成一个一个的小块,然后基于http文件进行下载,而每次仅仅是下载一部分。此外,H5直播时会引入基于HLS协议的.m3u8的文件,用来存放视频流数据。每一个.m3u8文件又会对应若干个ts文件,这些ts文件才是最终存放视频数据的。
由于这样的流程机制存在,使得HLS直播的延时性会相对较高的。举例来讲,如果列表内有若干个ts文件,每个ts文件包含固定时长的视频内容的话,那么整体的延时就是若干个ts文件视频时长相加的总和。即使我们能够缩短ts文件中的视频时长,但服务器的请求数也会增加,为服务器增加了压力。所以说,HLS协议的直播延时问题是比较明显的,而且很难达到一个直播延时的平衡点。能控制在15s左右就已经很不错了,但依旧会影响直播观看体验。
RTMP协议的应用
RTMP协议是Adobe旗下的专门用来进行视频直播的协议,它的实时性要比HLS协议好很多,延时较低,常用来实现视频直播过程中的视频推流。RTMP传输协议的工作原理是收到每个时刻的视频数据后会立刻发送出去,延时基本可以控制在5s以内,所以绝大多数的即时互动直播平台建设都会使用RTMP传输协议。但是,RTMP协议由于是基于flash实现播放的,所以无法适用于iOS浏览器的播放。不过由于主要用在即时互动直播场景,H5直播场景的应用反而显得不是特别重要了。
对于直播平台建设而言,核心问题就在于实时直播观看及主播和用户的即时互动。H5直播虽然可以通过打开浏览器随时随地进行直播观看,但由于延时高的问题,没有被广泛应用。
如今,国内很多服务商都推出了网络直播搭建方案,具备成熟的视频直播SDK,而且也有很多服务商提供成品的直播平台源码,使得直播平台建设的门槛越来越低,不过用户的直播体验优化反倒成为了关注的焦点。