【问题标题】:AudioContext decodeAudioData issue on SafariSafari 上的 AudioContext decodeAudioData 问题
【发布时间】:2019-11-18 11:38:36
【问题描述】:

我想将 .ogg 内容解码为 ArrayBuffer。

我的 Angular 应用程序组件中有以下代码:

ngOnInit() {
  (window as any).AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;
  this.audioContext = new AudioContext();
}

myFunction(oggArrayBuffer) {
  this.audioContext.decodeAudioData(oggArrayBuffer, function(buffer) {
    console.log('decoded audio data', buffer);
  },
  function(e) { console.log('Error with decoding audio data', e); });
}

这适用于 Chrome,但在 Safari 11 上,会触发错误:

解码音频数据 null 时出错

我可能会错过什么?

【问题讨论】:

  • 有测试文件吗?哪个确切的 Safari 版本?移动端还是桌面端?很高兴看到。

标签: angular typescript safari audiocontext webkitaudiocontext


【解决方案1】:

截至今天,Safari 仍然不支持使用decodeAudioData() 解码 OGG 文件。由于每个浏览器都支持不同的编解码器集,我只能推荐Decode this! 直接在浏览器中检查对各种文件类型的支持。

Web Audio API 不要求浏览器支持每个编解码器,这就是编解码器支持因浏览器而异的原因。但是浏览器必须用EncodingError 拒绝decodeAudioData(),以防它们无法解码。 Safari 确实拒绝 null 某些文件,这是一个错误。如果您希望 Safari 的行为始终如一,您可以使用 standardized-audio-context,它对此进行了修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2021-06-01
    • 2015-07-30
    • 2018-08-29
    • 2019-12-21
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多