直播技术——流媒体协议

时间:2021-11-23 10:09:14

其实写这个完全是从功利的角度来的,因为,周末要答辩,所以我必须保持一个清晰的思路。整理直播的主线技术迫在眉睫。

随着互联网视频化的发展,各类网络直播产品层出不穷,比如秀场直播、游戏直播、教育直播、演唱会直播和监控直播 (反正就是N多直播平台了) 等多个直播生态圈。

这些生态圈形成的背后,是视频直播相关技术的不断发展,例如互联网带宽的日益增加,视频压缩标准的日渐完善,视频云技术的出现等。

直播涉及到的技术比较多,主要大类有:采集、前处理、音视频编解码、流媒体协议、系统架构、CDN、播放控制、交互技术等。

本篇文章主要讲流媒体协议。

直播常用到的流媒体协议有rtmp、http、hls、rtsp。

下面简单说一下这几种协议的优劣(下面这张表是我从某个公众号拷贝的,据我所知,公众号也是从CSDN另外某个大佬那里拷贝到他们公众号的): 

协议名称

优势

劣势

rtmp

●  实时性高:一般能做到3秒内。

●  支持加密:rtmpe和rtmps为加密协议。

●  稳定性高:在PC平台上flash播放的最稳定方式是rtmp,如果做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的。

●  一般主流编码器都支持该协议。

●  协议复杂:开发者写起来累,效率也不行。

●  Cache麻烦:流协议做缓存不方便。

http

●  性能很高:http的性能好,协议简单,高性能服务器也完善。如果分发的量特别大,譬如点播视频网站,没有直播的实时性要求,http协议是最好选择。

●  没有碎片:http相比hls没有碎片。

●  穿墙:http协议是互联网唯一肯定会开放的协议,所以不存在封端问题。

●  实时性差:延迟10s起步。

●  原生支持不好:PC上flash对于http流支持还可以,但是移动端对于http的支持不是很完善

hls

●  性能好:和http一样。

●  穿墙:和http一样。

●  原生支持很好:iOS上支持完美,Android上支持差些。PC/flash上现在也有各种as插件支持HLS。

●  实时性差:与ts切片长度有关,大约3个切片长度时间的延迟,基本上HLS的延迟在10秒以上。

●  文件碎片:若分发HLS,码流低,切片较小时,会导致太多的文件碎片

rtsp

●  延迟低,一般都能够做到500ms。

●  带宽好,时效率高。

●  倍速播放,主要是回放的时候提供的功能。

●  控制精准,任意选择播放点。

●  服务端实现复杂。

●  代理服务器弱:数量少,优化少。

●  无路由器防火墙穿透

●  管流分离:需要1-3个通道。

 

总得来看,rtmp以其 优良的实时特性、稳定性、以及主流编解码器都支持的特性胜出。