概要

在视频会议或直播等场景中,选择 SFU(Selective Forwarding Unit)侧混音还是客户端侧混音,取决于具体的使用需求、网络条件和系统设计等因素。两种方案各有优缺点,适用于不同的场景。

SFU 侧混音

工作原理:
SFU 在服务器端将多路音频流混合成一路音频流,然后将这路混合后的音频流发送给每个客户端。

优点:
减少客户端负载:客户端只需要接收和播放一路混合音频流,减轻了客户端的计算负担。
简化客户端实现:客户端不需要实现音频混音的逻辑,降低了开发难度。
统一混音控制:服务器端可以对音频混音进行统一控制和管理,比如音量平衡、音频效果处理等。

缺点:
增加服务器负载:服务器需要处理音频混音操作,增加了服务器的计算负担,尤其是在大规模应用中。
延迟可能增加:由于音频需要在服务器端进行混音处理,混音之前每路流要经过neteq模块,会引入额外的延迟。
音频效果变差:SFU侧混音时需要接收多路音频流要经过neteq模块才能使每路音频得到较好的pcm数据,然后进行混音,再进行编码后再转发给各个客户端,客户端收到之后又要经过neteq模块才播放,neteq中加速、减速、融合并不是完全没有副作用,可参考webrtc中neteq模块解决音频采集播放偏差问题帖子了解neteq模块。
灵活性有限:所有客户端听到的音频都是相同的混合版本,如果想知道具体是哪成员再讲话还需要其他额外的信息进行通知。

客户端侧混音

工作原理:
SFU 将所有参与者的音频流单独转发给每个客户端,客户端负责将这些音频流混合成一路音频进行播放。

优点:
降低服务器负载:服务器只需要负责音频流的转发,不需要进行混音操作,降低了服务器的计算负担。
减少延迟:音频流在客户端直接混合和播放,避免了服务器端混音引入的额外延迟。
音效更好:音频只会在端侧经过一次neteq模块
灵活性高:客户端可以根据自己的需求进行个性化的混音处理,比如选择性地播放某些音频流或应用不同的音频效果,同时客户端也能感知到具体哪些成员在讲话。

缺点:
增加客户端负载:客户端需要处理多个音频流的接收、解码和混音操作,增加了客户端的计算负担。
实现复杂度增加:多和成员都有声音时服务测要实现把最大几位说话的成员的流转发给端侧,因为会场讲话的成员可能在不断变化,端侧要考虑多路不同音频流的接收实现。

总结

以上就是两种混音方式的对比,综合来看在端侧进行混音效果应该会更好一些,因为腾讯会议以及ZOOM都是采用端侧混音的方式进行的实现。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐