【发布时间】:2021-10-05 14:42:55
【问题描述】:
我正在使用 AudioContext 为游戏加载 .mp3 文件。它曾经工作得很好,但在 Safari 15 发布后,我收到了来自人们的报告,其中声音无法播放。在他们升级浏览器之前,声音对他们来说很好用。
在我自己的 Safari 15 上它运行良好,但对于某些人来说,调用 audioContext.decodeAudioData 失败,他们只收到 EncodingError: Decoding failed 并且没有额外信息。我尝试使用 .aac 文件而不是 .mp3 文件,但发生了同样的事情。
很难弄清楚这一点,因为我自己无法重现它。有什么想法吗?
【问题讨论】:
-
我自己也有同样的问题。无法在本地重现,除了我无能为力的新浏览器错误之外,无法找出任何可能的原因。最终捕获失败的 decodeAudioData 调用并退回到 Wasm 支持的解码库(来自 wasm-audio-decoders)。在 Apple 挥舞我的拳头,我必须这样做,但这似乎很有魅力。
-
注意,我实际上是利用这个机会切换到 Opus 音频,Safari 本身并不支持该音频。 My fork of wasm-audio-decoders 包括我在 Web Worker 中进行解码的修改,这可以防止阻塞主线程(就像 decodeAudioData 在单独的线程中运行一样)。
-
另外,如果它是一个有用的数据点,我的 Sentry 日志表明这个问题影响了大约 20% 的 Safari 15 用户。
-
酷!而且,同样的:在两台 M1 Mac 和两台 x86 Mac 上进行了测试,当然它在它们上完美运行。
-
我用 Safari 15 在 4 台机器上进行了测试。两台机器有解码问题,两台没有。这两个正在运行 macOS 10.15.7 (Catalina)。没有运行 macOS 11+ (BigSur) 的两个。当然,对于 N=4,这是非常不确定的,但这可能是一个提示。还有其他人看到 macOS 版本与他们机器上的问题之间存在关联吗?
标签: javascript safari audiocontext