请选择 进入手机版 | 继续访问电脑版

默认
发表评论 0
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
【技术入门】直播协议简述

作者:图鸭科技、微信公众号:tucodec


概述


随着当下互联网视频化迅速发展,各类网络直播产品如雨后春笋般成长起来,涵盖了游戏直播、教育直播、演唱会直播和监控直播等多个直播生态圈。这些生态圈成长的背后,是视频直播相关技术的不断发展,例如互联网带宽的增加、视频压缩标准的不断完善、视频云技术的出现等。

直播过程中涉及到模块众多,主要有采集、前处理、音视频编解码、流媒体协议、系统架构、CDN、播放控制、交互技术等。

此次图鸭君主要给大家介绍直播协议模块,希望大家读完对该模块有一个系统性的了解。

流媒体协议


直播常用到的流媒体协议有rtmphttphlsrtsp

下面简单说一下这几种协议的优劣:
协议名称
优势
劣势
rtmp
l 实时性高:一般能做到3秒内。
l 支持加密:rtmpertmps为加密协议。
l 稳定性高:在PC平台上flash播放的最稳定方式是rtmp,如果做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的。
l 主流编码器都支持该协议。
l 协议复杂:开发者写起来会比较累,效率也不行。
l Cache麻烦:流协议做缓存不方便。
http
l 性能很高:http的性能好,协议简单,高性能服务器也完善。如果分发量特别大,譬如点播视频网站,没有直播的实时性要求,http协议是最好选择。
l 没有碎片:http相比hls没有碎片。
l 穿墙:http协议是互联网唯一肯定会开放的协议,所以不存在封端问题。
l 实时性差:延迟10s起步。
l 原生支持不好:PCflash对于http流支持还可以,但是移动端对于http的支持不是很完善
hls
l 性能好:如http
l 穿墙:如http
l 原生支持很好:iOS上支持完美,Android上支持相对差些。PC/flash上现在也有各种as插件支持HLS
l 实时性差:与ts切片长度有关,大约3个切片长度时间的延迟,基本上HLS的延迟在10秒以上。
l 文件碎片:若分发HLS,码流低,切片较小时,会导致太多的文件碎片
rtsp
l 延迟低,通常能做到500ms
l 带宽好,时效率高。
l 倍速播放,主要是回放的时候提供的功能。
l 控制精准,任意选择播放点。
l 服务端实现复杂。
l 代理服务器弱:数量少,优化少。
l 无路由器防火墙穿透
l 管流分离:需要1-3个通道。

看了以上这些协议的对比介绍,想必各位都注意到了一个问题,那就是延迟。所有协议中都提到了延迟,延迟最低的也有500ms。那么为什么会出现这样的情况呢?

简说延迟


在这里简单说一下rtmprtsp的延迟,我们先谈rtmp的延迟。圈内有人整理了一张直播延迟(rtmp)的图片,图鸭君直接上个真相。

1.png

看完上图你大概就能明白了,rtmp的延迟是和Gop挂钩的。那么,为什么rtsp延迟会比rtmp低呢?因为,它是精确控制的,可以跳出以Gop组为单位的控制。

rtsp延迟已经是上述四个协议里最低的了,那么延迟还有降低的空间吗?

如何降低延迟时间


图鸭君经过多次测试,发现udp直接发裸流,可以将延迟控制在80ms170ms的范围。

既然udp直接发裸流延迟那么低,为什么不流行?

原因很简单: udp是个不可靠传输,存在丢包、乱序的情况。而且直接裸流稳定性也差,兼容性更不用谈,没有编码器对接的情况下,这就是一个钢丝上骑自行车的活,高难度动作,能干这行的,必须得是艺高人胆大。

直播涉及到的技术模块非常多,本文主要介绍了直播中常用协议。而对于流媒体传输,现在出现了越来越多的私有协议,这些私有协议通常延迟都比较低,如大家用的微信视频就是使用的私有协议。大家体验后会发现,私有协议的延迟远远低于rtsp500ms。但通常这些私有协议只支持端而不能支持web开发,这是因为一般协议都是用c/c++写的socket通信。

总结


就直播发展而言,最近几年直播的发展势头,用迅猛二字来形容绝不为过。自14年习近平主席提出网络强国战略和李克强总理提出了互联网+”的新思路新理念后,各大小直播平台如雨后春笋般涌现,甚至2016年被授予了一个特殊称号——“网络直播元年2017219日,央视新闻移动网正式上线,为广大记者打造了移动直播系统——“正直播。这些都标志着大数据时代、新媒体时代已经到来,媒体行业将面临新一轮的挑战和转型,这将是传媒史上一次对新闻直播技术的革新,也将成为新闻直播样态的一次革命性创举。

附流媒体技术图,仅供参考:
2.png

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

推荐方案
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部