可能大部分人认为,只要拥有一套优质的在线直播源码,就可以顺利进行开发和搭建等步骤了。但实际上,整个直播过程主要涉及到采集、处理、编码、封装、推流、传输、解码等一系列过程,本次就重点说推流和传输的问题。
推流对于直播链路的影响是非常大的。下面一起来看下开发时需要了解的几个推送协议。
1.RTMP
即实时消息传输协议,该协议基于 TCP是一个协议族。其中包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括 Adobe Media Server/Ultrant Media Server/red5 等。RTMP 是目前主流的流媒体传输协议,广泛用于直播领域。
RTMP协议基本特点:
基于TCP协议的应用层协议
默认通信端口1935
RTMP URL格式:
rtmp://ip:[port]/appName/streamName
2、Web RTC
Web RTC名称源自网页即时通信,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。目前主要应用于视频会议和连麦中。
3、基于 UDP 的私有协议
有些直播应用会使用 UDP 做为底层协议开发自己的私有协议,因为 UDP 在弱网环境下的优势通过一些定制化的调优可以达到比较好的弱网优化效果,但同样因为是私有协议也势必有现实问题。
以上常用推送协议中,RTMP是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上绝大多数的直播产品都采用了这个协议。下面再来看一下传输协议有哪些。
常用的传输协议RTMP,HLS ,HTTP-FLV,HLS和HTTP-FLV都是基于HTTP的协议,RTMP是基于TCP。
HLS即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。它有一个非常大的优点就是HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,很通用所以流行度很高。但是它有一个很大的弱点就是延迟高。
HTTP-FLV是一种将直播流模拟成FLV文件,通过HTTP协议进行下载的模式来实现流媒体传输的协议。
RTMP即Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。