使用WebAudio合并/混合两个音频流

eir*_*rye 6 javascript audio html5 stream webrtc

我有一个来自navigator.getUserMedia的MediaStreamSource,它连接到GainNode,而GainNode又连接到ScriptProcessorNode,如下所示:

[getUserMediaStream] -> [MediaStreamSource] -> [GainNode] -> ScriptProcessorNode -> (destination)
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,正在执行主要工作的是ScriptProcessorNode,即通过WebSocket处理原始音频流并将其传输到远程服务器(我的应用程序基本上是基于Web的录音机)以进行保存.这很好用.

但是,现在我正在尝试引入第二个MediaStreamSource,这次来自WebRTC PeerConnection.对等连接本身工作正常,如果将音频路由到元素,我可以听到来自同伴的音频.但是,我希望第二个MediaStreamSource也可以通过管道输入ScriptProcessorNode,有效地记录两个音频流.

我想要做的是在两个音频流到达ScriptProcessorNode之前将它们混合在一起.我尝试将第二个MediaStreamSource连接到同一个GainNode(以及直接连接到ScriptProcessorNode),但这不起作用,因为这两个节点都不接受多个输入节点(即使它在尝试连接多余节点时从未返回任何错误).我想要实现这样的事情:

像这样的东西:

[MediaStreamSource] -> [Intermediary Node(s)?] -> [GainNode] -> [ScriptProcessorNode] -> [Server]
                     /
[MediaStreamSource] /
Run Code Online (Sandbox Code Playgroud)

然后我查看了WebAudio规范,发现实际上确实需要多个输入的唯一节点是ChannelMergerNode.然而,本说明书中指出流被合并到基于它们被连接到的节点上,使得连接在输入第一个流将成为输出的左信道和第二流将成为右声道的顺序信道.从这一点开始,我认为结果将最终成为我左耳上的一条流,而另一条右边则是右边的流.我只想将两个流合并并混合成单个单声道.

使用当前的WebAudio API,这有可能吗?

非常感谢你的帮助!

的Eirik

flo*_*850 0

您是否尝试将 ChannelMergerNode 与下混音结合起来?

http://www.w3.org/TR/webaudio/#UpMix <-- 棘手的链接,它是关于下混和上混的