如何选择直播协议?
/ / 点击 / 阅读耗时 8 分钟作者:云豹直播产品狗
链接:https://www.imooc.com/article/291396
在直播软件开发过程中,我们可能会遇到一些困惑。像是对于流媒体协议的选择,如 HTTP-FLV
、WebRTC
,RTMP
,HLS
及其它私有协议等,到底哪个比较合适?哪种协议可以用在 PC
平台上?哪种协议在移动设备上效果比较好?接下来小编就先从各项协议的优缺点比较说起。
一、 常见的几种流媒体协议的优缺点:
1、RTMP:
Adobe
公司为 Flash/AIR
与服务器之间传输音视频数据而开发的私有协议,也是目前最常用的流媒体传输协议。
优点:基于 TCP
长连接,不需要多次建连,延时低,通常只有 1~3s
;技术成熟,配套完善。
缺点:在 PC
浏览器中只能通过 Flash
使用,且无法在移动浏览器使用;鉴于 Flash
即将退出舞台,所以在网页播放端基本不会以 RTMP
做拉流。
2、HLS:
苹果公司提出的基于 HTTP
的流媒体网络传输协议。
其工作原理是切片式传输,把直播流切成无数片,用户在观看视频时,每次客户端可以只下载一部分。
优点:基于 HTTP
协议,所以接入 CDN
较为容易,很少被防火墙拦下,且自带多码率自适应;作为苹果提出的协议,在 macOS/iOS
下有极大优势,Android
中也提供了对应的支持;可以说此项协议用在移动设备上是再合适不过了。
缺点:延时较大,通常不低于 10s
。大量的 TS
片文件,会造成服务器存储和请求的压力。
3、HTTP-FLV:
把音视频数据封装成 FLV
,然后通过 HTTP
连接传输,与 RTMP
相比只是传输协议变了。对于网页播放端,本来还是需要 Flash
才能播放,但「flv.js」的出现又弥补了这个缺陷。
优点:低延时,整体效果与 RTMP
非常接近;相较于 RTMP
协议,能有效避免防火墙和代理的影响。
缺点:它的传输特性会让流媒体资源缓存在本地客户端,也就是说保密性不怎么样;直到目前仍然不兼容 iOS
的浏览器。
4、WebRTC:
基于 Google
开源技术,在 Web
端上实现流媒体的协议。
优点:RTMP
和 HLS
都是掌握在大企业手中的协议,而 WebRTC
已被纳入 W3C
标准;无需安装插件,支持的浏览器越来越多。
缺点:厂商对浏览器或系统的定制可能会导致可用性问题,且缺乏服务器端设计和部署方案;传输质量难以保证,优化手段有限;在安卓设备上的兼容性不好;另外,此项协议主要面向 Web
端,对原生开发支持不足。
二、在直播软件开发中,在 PC 端用 RTMP、在移动端用 HLS,最稳妥。
为什么这样说呢?综合以上的优缺点比较,首先从各自的平台适配性上,且实现效果差不多的情况下,RTMP
、HLS
要比 HTTP-FLV
和 WebRTC
更优秀。
其次从市场环境上来说,经过了很多年的发展和磨合,很多的 CDN
大厂已经非常完美的支持 RTMP
和 HLS
了,这个稳定的过程都是多少运维人员熬出来的,CDN
不会对稳定盈利的系统轻易做出变化。同样,越来越多的公司来用 RTMP
和 HLS
,那么就造成 CDN
与 RTMP
、CDN
与 HLS
之间的优化和兼容更强了。这是一个循环过程,一般 CDN
公司不会轻易去打破。另外补充一点,之前文中没有提到 RTSP
协议,此协议和 RTMP
效果差不多,在技术上只是区别于传输数据上占用多少通道、传输格式流不太一样而已,RTSP
其实也可以用于直播。但依然是因为市场环境,RTSP
目前主要应用在安防监控上,和 RTMP
一样,早已形成了自己的盈利链。
以上就是在直播软件开发过程中,对于流媒体协议选择的讨论结果。关于这个问题,如果大家还有不明白的,可以直接留言或者找专业的开发商进行详细咨询。