【问题标题】:WebAudio Connecting Stream to Destination Doesn't WorkWebAudio 将流连接到目标不起作用
【发布时间】:2020-11-27 11:35:05
【问题描述】:

我收到了一个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)

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

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

【问题讨论】:

    标签: audio webrtc web-audio-api mediastream


    【解决方案1】:

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

    【讨论】:

    • 谢谢。控制台没有特殊消息。此外,直接播放srcStream 可以,只是在我构建这个目的地时它不起作用
    • 如果您没有 CORS 访问权限,则需要 WebAudio 来产生静默输出,即使音频标签在连接到媒体流源节点之前会正常播放。如果您为 sn-p 提供了一些不适用于 webaudio 的实际音频,那将非常有帮助,
    【解决方案2】:

    这是 Chrome 中的known bug。 解决方案是将流附加到一个新的音频对象,即使它没有使用

    new Audio().srcObject = srcStream;
    

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多