不一样音视频传输协议的对比

1、直播

直播场景一般使用的有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年后了。。。服务器

2、点播

点播的协议有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

  • 1).短视频播放——用整段mp4的较多
  • 2).与直播无关的长视频播放——用分段的mp4/flv较多;也有少数厂家开始使用HLS/DASH,但因为码率自适应对客户端的适配要求以及服务端转码要求不低,因此并无被真的普遍使用;有技术积累的厂家会用私有协议传输,叠加P2P
  • 3).直播生成的回放——用hls较多。由于hls能够在直播过程当中就转码切片生成ts,并且能够实现直播实时观看回放(*但这种状况不适用于互动直播)。固然也能够考虑使用分段的mp4/flv,可是这样在直播结束时须要更新最后的文件头,以及直播转回放的URI查询接口,会比较麻烦,也不适用于直播实时观看回放的场景。

对于mp4和hls,有一种方法能够结合两者的优势,具体见文章MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片接口

相关文章
相关标签/搜索