直播场景一般使用的有hls协议、http-flv渐进式传输、RTP协议、DASH协议、RTMP协议,固然还有一些公司本身研发的私有(通常是UDP)协议。此外还有一些较少为人所知的HDS(adobe出品的与hls/dash匹配的码率自适应协议HTTP Dynamic Streaming)、SSTR/MSS(微软出品的码率自适应协议Smooth Streaming Transport Protocol)html
各个协议对比:android
协议 | 传输层 | 客户端支持 | 优点 | 劣势 |
---|---|---|---|---|
hls | HTTP短链接 | ios/android端及H5原生支持,flash/PC端等须要自研播放器 | 支持普遍,HTTP请求支持简单,网络兼容性好,码率自适应,服务端及CDN支持好 | 延时太长,10s以上,单分片文件较小不便存储 |
http渐进式传输 | HTTP长链接 | flash支持,ios/android/PC端/H5须要自研 | 延迟相对较小,HTTP请求简单,网络兼容性好,服务端及CDN支持好 | 容易被劫持,多端兼容较为麻烦 |
rtp | UDP | Android端支持,其余各端都须要自研 | 延迟小 | 服务端逻辑复杂,协议及控制协议较难理解,开发周期长,客户端支持很难 |
dash | HTTP短链接 | H5原生支持,其余端须要转换格式 | 开放标准支持普遍,码率自适应 | 服务端及商业CDN支持不够,使用不普遍 |
rtmp | TCP长链接 | flash支持,其余须要自研 | 延迟较小 | 服务端压力相对较大,协议较为复杂,客户端兼容播放麻烦 |
私有协议 | UDP | 彻底须要自研 | 延迟能够作到很小,保密性较好,业务自行扩展性高 | 开发难度极其大,客户端/协议定义/流服务端及CDN都须要自行开发支持,传输可靠性难以保证 |
多说一句:上面表格中传输层一列,并非指该种传输方式对应的传输层协议(实际上传输层应该就是咱们说的UDP/TCP),而是咱们工做场合便于理解,常提到的传输和链接方式(有的是介于传输层和应用层的)。好比HTTP短链接和HTTP长链接,其实HTTP严格来讲是基于TCP的应用层协议,但TCP链接的通道能够保持一段时间不关闭,这样就实现了“所谓的”HTTP长链接。实际上对于HTTP而言,就是完成HTTP REQUEST和HTTP RESPONSE,但若是传输层的TCP链接未断开,则能够仍旧在这个通道中继续request和response。ios
目前国内互联网直播使用协议场景:web
业务场景 | 使用协议状况 |
---|---|
web端直播 | http-flv,rtmp,hls都有使用。通常若是结合P2P使用,会选择flv和hls |
移动端互动直播 | 较多使用http-flv,个别厂家使用私有协议 |
移动端大型直播 | 较多使用http-flv和hls |
web端推流 | 主要使用rtmp,少数使用rtp |
移动端推流 | 主要使用rtmp,少数使用rtp,个别厂家使用私有协议 |
我的比较看好dash的发展,标准老是须要统一的嘛,但感受要10年后了。。。服务器
点播的协议有hls,DASH,常见的基于http传输的mp4和flv,以及部分公司的私有协议。网络
写到这里我忽然以为confused。网上一大坨都是直接拿mp4/flv和hls并列对比,你说怎么能把mp四、flv和hls放一块儿对比呢?感受不对呀!!确实咱们一般是基于http协议来传输mp4和flv,但说白了mp4和flv是一种封装音视频的标准(是一个盒子),应该对应hls协议里面的ts/fMp四、DASH的mpd这些嘛,并且咱们也能够用私有协议来传输mp4和flv呀。可是为了便于理解,咱们沿用这种奇怪的对比方式。视频
各个协议对比:htm
协议 | 传输层 | 客户端支持 | 优点 | 劣势 |
---|---|---|---|---|
mp4 | 通常http | 普遍支持 | 各类设备及服务端、CDN都通用 | 文件头过大且会累积 |
hls | http | H5/iOS/android原生支持,其余须要自研 | 码率自适应,直播切点播时能够实时生成 | 拖拽可能不够精准,对于超长点播可能分片较多 |
flv | 通常http | flash支持,ios/android/PC端/H5须要自研 | 格式简单 | 多端兼容略微麻烦 |
dash | http | H5原生支持,其余须要转换 | 码率自适应,标准规范 | 服务端及CDN支持不够,使用不普遍 |
私有协议 | udp | 同直播 | 与直播不一样的是,更多的结合P2P使用,用于合理利用带宽 | 同直播 |
目前国内一般使用搭配:blog
对于mp4和hls,有一种方法能够结合两者的优势,具体见文章MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片接口