目前国内主流的直播协议有HLS、RTMP、HTTPFLV,适用于不同的直播场景。1.HLS、RTMP和HTTPFLV1。HLSHLS的全称是HTTPLiveStreaming,是苹果公司实现的一种基于HTTP的媒体流协议。它与DASH协议的原理非常相似。通过将整个流切割成一个个小的可以通过HTTP下载的媒体文件,然后提供一个匹配的媒体列表文件给客户端,让客户端依次拉取这些媒体文件进行播放,从而达到这样的效果它似乎在播放流。HLS协议基于HTTP,主要内容是关于M3U8文本协议。其实生成和解析都很简单。HLS的请求过程是:http请求m3u8url。服务端返回一个m3u8播放列表,实时更新,一般一次给出5条数据的url。客户端解析m3u8播放列表,然后请求每个segment的url,以获取ts数据流。HLS的优点简单的客户端支持,只需要支持HTTP请求,HTTP协议是无状态的,只需要按顺序下载媒体片段即可。使用HTTP协议具有良好的网络兼容性,HTTP数据包也可以轻松穿过防火墙或代理服务器,CDN支持良好。苹果全系列产品支持,因为HLS是苹果提出的,所以苹果全系列产品包括iphone、ipad、safari都可以原生支持HLS,无需安装任何插件。现在,Android也支持添加了对HLS的支持。它带有多比特率自适应功能。苹果在提出HLS的时候,就已经考虑到了流适配的问题。HLS的缺点是相对于RTMP等长连接协议,延迟更高,难以应用于互动直播场景。对于点播业务,由于TS分片通常较小,海量分片对文件分发、一致性缓存和存储提出了很大的挑战。2.RTMPRTMP协议是InternetTCP/IP五层体系结构中应用层的协议。RTMP协议中的基本数据单元称为消息。当RTMP协议在互联网上传输数据时,消息会被拆分成更小的单元,称为消息块。在RTMP传输媒体数据的过程中,发送端首先将媒体数据封装成消息,然后将消息分成消息块,最后通过TCP协议发送划分好的消息块。接收端通过TCP协议接收到数据后,首先将消息块重新组装成消息,然后通过对消息进行解封装来恢复媒体数据。RTMP的优点是速度快、误码率低、延迟小。RTMP专为流媒体服务而设计。协议制定时,考虑了很多底层优化消息块的传输,提供更稳定的直播环境。对硬件的要求会更高,但是可以缓解http这种繁琐的传输介质。RTMP的缺点是不支持Html5传输,浏览器推送是基于TCP协议的。虽然开发难度大,推广力度不够,但对开发者的门槛还是比较高的。与HLS相比,对硬件的要求更高。3.HTTPFLVHTTPFLV是一种将直播流模拟成FLV文件,通过HTTP协议下载,实现流媒体传输的协议。HTTPFLV将RTMP的低延迟与可以重用现有HTTP分发资源的流式传输协议相结合。其实时性与RTMP相当,与RTMP相比节省了部分协议交互时间,首屏时间更短,可扩展功能更多。HTTPFLV的优点可以在一定程度上避免防火墙的干扰。很好的兼容HTTP302重定向,灵活调度。它可以使用HTTPS作为加密通道。对移动端(Android、IOS)支持良好。2、直播协议HLS、RTMP与HTTPFLV的简单对比3、总结RTMP格式目前在国内应用广泛,国内CDN厂商也支持RTMP协议。HLS作为苹果公司提出的直播协议,在iOS端占有不可动摇的地位,同时也便于传播。HTTPFLV采用了类似于RTMP流媒体协议的HTTP长连接,需要通过特定的流媒体服务器进行分发,兼顾了两者的优点。优拍云一站式直播解决方案基于优拍云CDN,支持RTMP、HTTP-FLV和HLS协议,集成RTMP,HTTPFLV直播时延控制在1秒以内,HLS协议控制在4秒以内。推荐阅读:WebSocket+MSE——HTML5直播技术解析让Chrome无法收看WWDC直播HLS技术详解技术干货|HLS协议详解及优化技术解析
