【问题标题】:Audio doesn't play anymore in Safari 13 unless getUserMedia is called除非调用 getUserMedia,否则 Safari 13 中不再播放音频
【发布时间】:2020-02-07 07:05:47
【问题描述】:

我正在使用getUserMedia 录制音频,然后允许用户单击一个按钮来收听录音或另一个缓冲区。一年来这一切都很好,所以我认为我没有违反任何导致 AudioContext 被暂停的规则。而且,无论如何,我正在测试 AudioContext 以确保它不会在我的按钮处理程序中暂停。

这在所有具有许多浏览器的现代系统上都运行良好。但是,这不是在 iOS 的 Safari 13 中播放音频。它会从承诺中返回,就好像它正在播放音频一样,但是在我再次调用getUserMedia 之前没有任何声音。

作为一个实验,我将下面一行放在按钮处理程序的顶部:

navigator.mediaDevices.getUserMedia({
    audio: {
        echoCancellation: {ideal: false},
    }
});

而且它有效!

但是,为什么?我对那个解决方案不满意,因为我不确定浏览器为什么想要这样。我必须请求麦克风播放任何声音对我来说没有意义。

我唯一的线索是,一旦我执行getUserMedia,我会在 Safari 上保持录音打开(我这样做是因为 Safari 有一个超时时间 - 当我请求麦克风时,它会向用户弹出一个对话框允许麦克风。有时用户可能需要 90 秒才能按下“录音”,如果我不打开麦克风,它会再次弹出对话框。)

有人知道发生了什么吗?而且,我还没有找到任何关于 Safari 和音频的技术文章。除了标准的 MDN 之外还有什么?

【问题讨论】:

    标签: javascript mobile-safari html5-audio web-audio-api


    【解决方案1】:

    IOS13 还破坏了我们的一个应用程序。多年来一直运行良好。没有错误被抛出,我们也没有违反任何规则。这是我的帖子的链接: Has IOS13 broken <audio> tags used as audio buffers connected to the audio context?

    尽管它是 api 的不同用途,但我相信它是相关的。 Apple 显然在这个新版本中打破了一些东西。

    【讨论】:

    • 是的,这听起来像相同的症状。我向 Apple 提交了错误报告,我将发布我得到的更多信息。
    • 在哪里可以提交此类报告? (我们越多越好)
    • 嗨@Paulie 你有没有从苹果那里得到任何回复?它也破坏了我们的应用程序。
    【解决方案2】:

    这已被确认为 Safari 13 中的一个错误,并已在维护版本中得到修复。我们还没有听到更多来自该领域的报告,所以我猜它会自动为每个人更新。

    【讨论】:

      猜你喜欢
      • 2021-07-21
      • 2021-03-20
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2012-09-05
      • 2021-05-31
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多