OBS如何支持直播多人连麦和BGM?比如SRS 4.0的多人连麦、多平台直播、多场景切换的在线发布会方案如何实现的?
一图胜千言,就是实现下图的能力,是用的OBS推的直播:
废话不多说,直接上干货。
Why
为什么是OBS连麦,而不是各个直播平台的连麦,或者不是会议SaaS的连麦功能?
首先,OBS的用户还是很多的,大多数都是做直播的,单个主播做直播的方式。在娱乐直播、秀场、教育、活动、现场、电商、游戏等等,各种地方都可以用OBS做直播。
问题是为什么用OBS做直播?OBS和核心能力是直播推流吗?
不是!
OBS的核心能力是相对丰富的导播能力。这里说的相对,是对比起专业的广电级别的导播台来说,OBS肯定不行的。问题在于我们也不需要那么专业的导播台,对不对?现在直播是个大众能力,每个人都可以用直播,每个人未来也都会做直播,那每个人买个导播台么?!没必要啊。
导播能力到底指什么?比如场景切换,如下图所示:
左下角是Scenes(场景),直播活动一定有预告的,比如SRS每周六晚上20点直播,那不能等到20点了才能推流对不对?可能19:50就开始准备和推流,大约5到10分钟放预告,也可以放一些宣传片,或者活动的说明之类的,关键得有BGM。所以我定义了两个Scenes:
•WeeklyBGM:直播预告,这是会带BGM(背景音乐)的,一般我放的都是Victor(大师兄推荐的)。而且这时候是不能采集麦克风的,可能还不太方便采集,大家在调试之类的。•WeeklyLive:正式直播,可以看到采集了连麦的窗口,在临时围观群二维码下面就是一个多人连麦的头像列表,这个是用响总推荐的Timmerse实现(可以用其他的方案,详细的我们在复刻视频中会说明)。
现在到了20点了,只需要点下两个场景中间的Transition
按钮,画面就会平滑的切换过去,而且可以设置切换时间之类的。这个是OBS的核心能力之一:多场景导播。
在直播中,有时候我们需要临时调整下直播间设置,比如临时需要看下嘉宾的作品,那可以先讨论其他话题,同时工作人员创建一个新场景,等准备好了就可以切换到新场景了。这个是我经常使用的功能,多方便啊!
OBS就这个场景切换能力么?还有非常多的源,比如视频文件、窗口、子场景、文本、VLC源、图片、图片集、视频设备、音频设备该有的都有了。而且这些上面都可以加滤镜。
滤镜是超级牛逼的功能啊。比如一个困扰就是电脑的麦克风会有风扇的噪声,这时候就可以用RNN降噪,只保留了人声。比如可以绿幕抠图,对的,OBS也可以绿幕抠图。比如可以裁剪窗口的大小,只显示某一部分,比如我经常把OBS自己的底部的状态条给抓进视频流,在直播间可以看到实时的直播码率。
这么好的一个直播神器,还是开源的,有非常丰富的插件,超级多的插件。有必要重复造个更圆的轮子么?有可能有必要重复造一个,但更圆就真的很难做到了。OBS是非常非常久的一个开源项目,33K star,8年时间,非常活跃,如下图:
好了,为什么要用OBS说清楚了,为什么要用OBS做连麦呢?因为有时候直播还是需要连麦的。而目前能连麦的直播,大多都是平台自己实现的,比如视频号连麦后,没法再推到B站上。或者用腾讯会议连麦后可推到其他直播平台,但是又用不了OBS的这些能力,也不能往多平台推。也就是目前的直播连麦,都没法在OBS中用起来,得自己倒腾,这也是为什么大家会很好奇SRS怎么做的。
但是,OBS还没有连麦能力,所以我们就想出一个方案,相对比较简单实现OBS的直播连麦。目标如下:
•用OBS做直播,使用OBS强大的导播、丰富的功能和滤镜、大家很熟悉的工具。•要有BGM,要有连麦,要有混音,还要对电脑风扇的声音智能降噪,声音不能翻车。•连麦的嘉宾,最好能有视频头像,如果业务上只需要声音也行,能降低带宽消耗。
没有团队保障、成本不能高、还要直播多人连麦,要不翻车,还挺难的,哈哈哈。
PS: 由于使用OBS推流,所以多平台直播也是可以做的,这是直播中比较常见的功能,当然我们也有个开源复刻会给大家分享,参考 #2676
How
我和杰哥会录制一个视频,详细分享下具体的实现和Demo,当然也会安排答疑。所以大家感兴趣的话,可以在本文的评论区留言,让我们了解下大家是否也需要这个方案。
为了避免视频中的图片不清晰,或者更新不及时,我在这里把大概的技术方案描述下,在视频中会详细讲解。
总体的部署架构图,一个主播和一台电脑,就可以完成一次线上发布会了。当然需要一些辅助工具,包括SRS、FFmpeg、视频号账号、B站账号、连麦工具(Timmerse或腾讯会议或其他)。
连麦的语音是容易出问题的,需要安装iShowU Audio Capture[1]这个工具才能采集到扬声器的声音。
Windows会比较简单,OBS就能直接采集扬声器的声音,所以不需要额外的软件支持。
详细架构图参考SRS 2021在线发布会技术方案[2]
Air Pods
因为有直播和连麦,主播必须佩戴耳机,否则会造成各种声音问题。
主播的AirPods必须关闭入耳检测(Automatic In-Ear Detection),不然重新戴上耳机会导致Output切换,以至于直播可能没有声音。
Latency
直播连麦的延迟相对比较好测量,在用摄像头抓秒表后,播放每个环节,可以看到延迟对比。
每个环节都会增加一些延迟,最终到观众端总延迟大约在5~7秒左右。OBS采集(包括连麦)延迟大约800ms左右。OBS推流到本机SRS延迟大约200ms左右,包括编码和传输。FFmpeg转推云平台和播放,大约4秒左右延迟。
连麦延迟中,大约在800ms左右,包括RTC延迟和OBS采集延迟。RTC的延迟在200ms左右。OBS采集也是有延迟的,比如抓RTC的连麦窗口,大约会有600ms左右延迟。
外接声卡
这个方案也是支持外接声卡的,可以让声音更好听,杰哥会给大家带来详细的分享。
Next
还未完成的工作:
•准备详细的讲解视频。•一次答疑。•12.19 SRS 4.0 线上发布会实战趟坑。
欢迎大家点击“阅读原文”关注后续的进展。
关于SRS 4.0发布会
SRS 4.0发布会将在12.19在线举行,其实 SRS就是个屌丝开源项目,谈不上什么高大上的发布会,我们也不想办一个高大上的发布会。
只是发布会比较容易形容这次活动,也就不那么纠结了。
这次会发布4.0,其实也没啥好发布的,一个开源项目,有啥发布不发布的,又不是有新品和服务发布。
更多的是为了纪念社区的努力吧,目前为止一共有300多位开发者给SRS贡献过代码,为了表示感谢,办一个简单的发布仪式。
不想把时间花在给大家呈现一个漂亮的发布会,而是把尽可能多的时间都花在解决问题和码代码上,所以这次肯定是很不像发布会的发布会。
尽管如此,干货不能少,互动不能少,也不需要商业赞助,这是开源社区的一次线上活动。
发布会上会给大家准备一些礼品,抽奖送给大家,数量不多请不要吐槽哈。SRS 4.0就是最大的礼物。
发布会本身的技术方案,算第二个大的礼物吧。
References
[1]
iShowU Audio Capture: https://obsproject.com/forum/resources/os-x-capture-audio-with-ishowu-audio-capture.505/
[2]
SRS 2021在线发布会技术方案: https://www.processon.com/view/link/619846ae5653bb308042e82a