可能大部分人认为,只要拥有一套优质的在线直播源码,就可以顺利进行开发和搭建等步骤了。但实际上,整个直播过程主要涉及到采集、处理、编码、封装、推流、传输、解码等一系列过程,本次就重点说推流和传输的问题。
推流对于直播链路的影响是非常大的。下面一起来看下开发时需要了解的几个
推送协议。
1.RTMP
即实时消息传输协议,该协议基于TCP是一个协议族。其中包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括AdobeMediaServer/UltrantMediaServer/red5等。RTMP是目前主流的流媒体传输协议,广泛用于直播领域。
RTMP协议基本特点:
基于TCP协议的应用层协议
默认通信端口1935
RTMPURL格式:
rtmp://ip:[port]/appName/streamName
2、WebRTC
WebRTC名称源自网页即时通信,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。目前主要应用于视频会议和连麦中。
3、基于UDP的私有协议
有些直播应用会使用UDP作为底层协议开发自己的私有协议,因为UDP在弱网环境下的优势通过一些定制化的调优可以达到比较好的弱网优化效果,但同样因为是私有协议也势必有现实问题。
以上常用推送协议中,RTMP是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上绝大多数的直播产品都采用了这个协议。