created by snowlyg

开源的 webrtc 项目本身内置了对音频信号的3A算法,包括回声消除(AEC)、噪声抑制(ANS)、自动增益控制(AGC), 这个三个算法配合在发声端对音频数据进程处理,可以提高音频质量和通话效果。

但是 webrtc 毕竟是国外的开源项目,国内的小厂商的硬件大部分都无法很好适配,而且一些低端产品的麦克风和扬声器质量不太行,导致实际的通话效果并不理想。

小厂商的产品线又不稳定。可能过几个月,之前的产品就淘汰了。所以修改 webrtc 项目去做适配不仅费时费力,而且很可能最终成为无用功。

在服务端中间层对音频处理之后再发送到远端设备,是另一种可行的解决方案。

需求依赖

项目样例采用开源项目 https://github.com/pion/webrtc/tree/master/examples/save-to-disk

  1. 编译 save-to-disk 样例,生成 save-to-disk 执行文件
git clone <https://github.com/pion/webrtc> --depth=1 
cd webrtc/[examples/save-to-disk](<https://github.com/pion/webrtc/tree/master/examples/save-to-disk>)
go build
  1. 在浏览器打开 https://jsfiddle.net/2nwt1vjq/ 地址,点击 Copy browser SDP to clipboard 按钮,复制浏览器 SDP 信息。

企业微信截图_17591365671613.png

  1. 执行 save-to-disk 执行文件并带上 复制的浏览器SDP 信息,将控制台输出的 sdp 信息复制到浏览器的第二个输入框,并点击 Start Session 按钮。

企业微信截图_17591369315774.png