OBS直播延迟为什么那么高?怎么解决?
知其然要知其所以然,只有了解了OBS和直播的逻辑,才能找到对应的解决办法,所以做了大量的技术调研。我们来看下目前传统直播的流程。如下图
从推流到播放,会引入延迟的环节有编码延迟、网络丢包和网络抖动、视频的分段传输、节点、播放器的缓存等等。由于RTMP基于TCP不会丢包,所以当网络状态差时,服务器会将包缓存起来,导致累计的延迟。一个经过优化的RTMP-CDN网络端到端的延迟大概在2-3秒,移动端考虑兼容性多为HLS流即M3U8协议,延迟会更高,基于15秒到1分钟之间。
我们从上得知RTMP协议是无法修改的,CDN拉流是目前行业已经成熟的方案,如果要基于这套传输链路,只能从OBS的软件编码配置上优化。OBS确实也提供了低延迟的方案,如下图。
这一套参数的逻辑就是尽可能的优化编码和缓存,达到低延迟的效果,解决了推流部分的问题,但极容易造成推流卡顿,也并没有解决移动端HLS拉流延迟的问题,所以这不是最优方案。
别走,干货来了,OBS无延迟最优解
正当我发愁的时候,发现我们公司采购的直播平台推出了无延迟的直播模式,所以我赶紧去创建无延迟直播间体验了一下,发现确实是没什么延迟的。
特别好奇怎么做到的,我打开了该直播平台的软件目录,发现基本上和OBS一致,所以我断定OBS也可以做真正的无延迟。
左边是公司采购的直播平台目录,右边是OBS Studio的安装目录
经过对比后,我发现相比于OBS,该平台的直播软件多出来了几个dll库文件,其中有些关键信息RTC。
RTC这个协议是谷歌提出的开放实时通信框架,确实能实现实时交互,难道是在OBS中加入RTC?带着这份好奇,我专门咨询了该平台的售后,他们说近期会推出OBS无延迟的插件,豁然开朗,那我就等等。
终于在经过一段时间的等待后,我拿到了OBS的无延迟插件包,确实如我所想,是将他们自主研发的RTC库打包到了OBS中,在经过一定的文件配置后就可以实现无延迟直播了。配置的流程大致如下。
大家点击查看吧