对于直播业务来说,推流和传输是非常重要的部分。可能大部分人都认为,只要拥有一套优质的在线直播源码,就可以顺利进行开发和搭建等步骤了。但实际上,推流对于直播链路的影响是非常大的。如果说,推流的过程中网络十分不问题,那么不论我们怎样优化,最终开发出的app在运行过程中也会给用户带来糟糕的体验。本文主要分享开发时需要了解的几个推送协议。
1. RTMP
(1)定义
相信大家对这个协议一点都不陌生,它就是直播中最常用的实时传输协议。RTMP基于TCP是一个协议族(包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种)。RTMP是一种设计用来进行实时数据通信的网络协议,主要用于在Flash/AIR平台和支持RTMP协议的流媒体、交互服务器之间进行音视频和数据通信。
(2)优势
主要体现在CDN支持良好,大部分主流的CDN厂商都可以支持。并且协议相对简单,容易在各个平台上实现。
(3)劣势
由于RTMP是基于TCP,传输成本较高。而且在弱网环境下丢包率较高的情况十分明显,不支持浏览器推送。
2.WebRTC
(1)定义
WebRTC名称源自网页即时通信,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。目前主要应用于视频会议和连麦中。
(2)优势
W3C的标准,支持主流浏览器的程度较高。底层基于SRTP和UDP,在弱网情况下优化的空间较大,能够实现点对点通信,通信时双方产生的延时较低。
(3)劣势
传统的CDN支持性较差。
3.基于UDP的私有协议
(1)简介
有的直播应用场景会使用UDP作为底层的协议,然后开发自己的私有协议。为什么呢?因为UDP在弱网环境下可以通过一些定制化的调优,从而达到较好的弱网优化效果。
(2)优势
具备更多的空间进行定制化的优化。
(3)劣势
大家比较关心的一点就是,开发成本较高。CDN支持不太友好,需要自建CDN或者是和CDN达成协议。
其实在直播应用场景下推送出去的流媒体需要传输到用户端,这一个链路就是所谓的传输网络。如果在传输过程中出现网络拥塞的情况,就需要进行一定的智能调度,从而使得传输网络保持顺畅。所以说,拥有在线直播源码是软件开发过程中最基础的一步。要想实现直播业务,并且保证直播业务的流畅运行,在协议的选择上也要多下一番功夫。
本文声明原创,转载请注明出处。