WebAudio 将流连接到目标不起作用

WebAudio Connecting Stream to Destination Doesn't Work

我得到一个 MediaStream,其中包含来自 WebRTC 的音频数据。我们称此流为 srcStream.

如果我有我的HTML

<audio id="audio" controls autoplay></audio>

而我运行

audioEl = document.querySelector("#audio")
audioEl.srcObject = srcStream

我能听到音频,我能看到音频元素开始计算秒数。

但是,我得到了多个音频流,所以我想做一些更通用的事情,并将所有这些流连接到一个流中。 如果我运行

audioCtx = new AudioContext()
dst = audioCtx.createMediaStreamDestination()
audioEl.srcObject = dst.stream

src = audioCtx.createMediaStreamSource(srcStream);
src.connect(dst)

音频显示为正在播放,但我听不到任何音频播放。

我创建目的地的方式有问题吗?

也许检查控制台是否有关于由于 CORS 限制而无法播放的消息。要让 WebAudio 播放音频,您必须在音频标签源上正确设置 CORS 才能允许访问。

这是 Chrome 中的 known bug。 解决方案是额外将流附加到新的音频对象,即使它未被使用

new Audio().srcObject = srcStream;