当你看到这篇文章的时候,相信你也经历着我几个月以来遇到的难题。这都5G兴起元宇宙大火的时代了,如何直播还有那么大的延迟,少则几秒多则几十秒,特别是手机观看那直播延迟,简直受不了。
在讲OBS无延迟方案前,先讲讲我的个人经历。鄙人有幸自从业以来一直在直播行业摸爬滚打,差不多8年了。前几年主要是做现场直播执行,搞搞游戏直播 企业年会 发布会啥的,所以经常用obs vmix等推流。后来因为疫情和我个人意愿等原因,就来到了目前的公司,或是会用到直播做培训等。此刻你肯定在想,说这些干啥,这和obs无延迟有啥关系?
1、为啥要研究OBS无延迟直播?
一方面是做了培训相关的直播之后,经常看到培训同事直播时有时候很尴尬,比如说“听到声音看到画面的,请扣1”“大家听明白了吗”,这个时候同事基本上要等个几秒几十秒甚至更久才能收到聊天回复,非常的不及时;二来这不也快年底了,领导给我安排个任务要做一场大型年会直播,又要超清又要低延迟,让分公司的同事互动起来。所以我决定好好研究下如何降低直播延迟。
2、OBS直播延迟为啥那么高?如何解决?
知其然要知其所以然,只有了解了OBS和直播的逻辑,才能找到对应的解决办法,所以做了大量的技术调研。我们来看下目前传统直播的流程。如下图
从推流到播放,会引入延迟的环节有编码延迟、网络丢包和网络抖动、视频的分段传输、节点、播放器的缓存等等。由于RTMP基于TCP不会丢包,所以当网络状态差时,服务器会将包缓存起来,导致累计的延迟。一台经过优化的RTMP-CDN网络端到端的延迟大概在2-3秒,移动端考虑兼容性多为HLS流即M3U8协议,延迟会更高,基于15秒到1分钟之间。
我们从上得知RTMP协议是无法修改的,CDN拉流是目前行业已经成熟的方案,如果要基于这套传输链路,只能从OBS的软件编码配置上优化。OBS确实也提供了低延迟的方案,如下图。
这一套参数的逻辑就是尽可能的优化编码和缓存,达到低延迟的效果,解决了推流部分的问题,但极容易造成推流卡顿,也并没有解决移动端HLS拉流延迟的问题,所以这不是最优方案。
3、别走,干货来了,OBS无延迟最优解
正当我发愁的时候,发现我们公司采购的直播平台推出了无延迟的直播模式,所以我赶紧去创建无延迟直播间体验了一下,发现确实是没什么延迟的。
特别好奇如何做到的,我打开了该直播平台的软件目录,发现基本上和OBS一致,所以我断定OBS也可以做真正的无延迟。
左边是公司采购的直播平台目录,右边是OBS Studio的安装目录
经过对比后,我发现相比于OBS,该平台的直播软件多出来了几个dll库文件,其中有些关键信息RTC。
RTC这个协议是谷歌提出的开放实时通信框架,确实能实现实时交互,难道是在OBS中加入RTC?带着这份好奇,我专门咨询了该平台的售后,他们说近期会推出OBS无延迟的插件,豁然开朗,那我就等等。
终于在经过一段时间的等待后,我拿到了OBS的无延迟插件包,确实如我所想,是将他们自主研发的RTC库打包到了OBS中,在经过一定的文件配置后就可以实现无延迟直播了。配置的流程大致如下。
4、OBS无延迟插件配置步骤
4.1、下载官方提供的插件包
4.2、根据里面的使用指南配置文件
4.3、填写频道和密码,添加素材就可以开播了。
5、一键配置OBS无延迟插件工具
官方给的方法稍微有点复杂,为了更好的让大家简单使用,利用我浅显的编程技术制作了一键配置工具,有兴趣的都可以点击下面的插件获取。
6、看看全终端无延迟观看直播效果
在OBS插件配置完成后,我们添加素材看下无延迟效果,如何体现无延迟呢,那就是用北京时间。下图就是效果啦,简单粗暴的展示。左边是移动端观看,中间是PC,右边是OBS发起端。
终于解决了OBS无延迟直播问题,整体下来效果还真的不错,可以做好多实时互动。在不断的研究中也学习到了更多关于直播的知识。
7、老板给予了极大的肯定
老板对我的无延迟直播方案,表示了极大的满意度,给予高度肯定。
|