文章目录
- 一、音视频通信流程
- 二、流媒体协议
- 1、RTSP
- 2、RTMP
- 3、HLS
- 4、WebRTC
一、音视频通信流程
音视频通信完整流程有如下几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染
等。
每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有H.263,H.264、H.265等。
二、流媒体协议
1、RTSP
RTSP(Real-Time Streaming Protocol)
,实时流式协议。
- RTSP一般不用作直播场景,RTSP一般用作摄像头、监控等硬件设备的实时视频流观看与推送上。
- 现在的浏览器都不支持RTSP的播放。
2、RTMP
RTMP(Real Time Messaging Protocol)
,实时消息传输协议。是一个古老的协议。RMTP最初由Macromedia开发,后被Adobe收购,至今仍被使用。由于RTMP播放视频需要依赖Flash插件。而Flash插件多年来一直受安全问题困扰,正在被迅速淘汰。因此,目前RTMP主要用于提取stream。也就是当设置解编码器将视频发送到托管平台时,视频将使用RTMP协议发送到 CDN,随后使用另一种协议(通常是HLS
)传递给播放器。
- RTMP协议是既可以推流、也可以拉流的协议。一般只用作直播源推流、推流到直播CDN等场景。
- RTMP地址是
rtmp://
开头的,且推流地址与播放地址是一样的。 - RTMP协议的延迟是比较低的,大概在
1-3秒
左右。 - RTMP协议需要特定的流媒体服务软件,如SRS、加入了RTMP插件的Nginx等。
3、HLS
HLS(HTTP Live Streaming)
。由 Apple 开发,旨在能够从 iPhone 中删除 flash,如今已成为使用最广泛的协议。桌面浏览器、智能电视、Android、iOS 均支持 HLS。HTML5 视频播放器也原生的支持HLS,但不支持 HDS 和 RTMP。这样就可以触达更多的用户。HLS 支持码率自适应,并且支持最新的 H.265 解编码器,同样大小的文件,H.265 编码的视频质量是 H.264 的二倍。
- HLS协议一般只用作拉流观看。
- 它工作原理很简单,就是通过HTTP协议下载静态文件。HLS协议的文件由两部分组成,一是多个只有几秒长度的
.ts
碎片视频文件,另一个是记录这些视频文件地址的.m3u8
索引文件,且这些静态文件都是直接写入磁盘的。 - 由于HLS协议实际上是通过HTTP协议请求文件的,且HLS相关文件是直接写入磁盘的,所以并不需要特殊的流媒体服务软件,使用Nginx等HTTP服务就可以了。
- HLS协议可以用于点播和直播观看,其适配多种播放场景,一般加入插件就可以播放了,如网页加入HLS的js插件就可以播放了,苹果设备是原生支持HLS协议的。
- HLS协议的直播流也可以适配很多播放场景,但是由于需要生成静态文件,直播延迟很大,大概在
5-30秒
左右,使用直播CDN的话,由于边缘节点同步等问题,直播延迟甚至可能会达到1分钟
左右。
4、WebRTC
WebRTC(Web Real-Time Communications)
, Web实时通信。
- WebRTC是基于UDP的,建立通信后,会不断以流式发送数据,所以延迟会比RTMP还要低。
- WebRTC协议支持推流和拉流,地址一般是以
webrtc://
开头的,且推流和拉流地址一般也是一样的。 - WebRTC虽然是点对点的协议,但是应用在直播场景的话,是需要搭建WebRTC服务器作为流媒体服务的。