Safari上的AudioContext解码音频数据问题

时间:2019-11-18 11:38:36

标签: angular typescript safari audiocontext webkitaudiocontext

我想将.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上,正在触发错误:

  

解码音频数据为空时出错

我可能会缺少什么?

1 个答案:

答案 0 :(得分:0)

到目前为止,Safari仍不支持使用decodeAudioData()解码OGG文件。由于每种浏览器都支持不同的编解码器集,所以我只能建议Decode this!直接在浏览器中检查各种文件类型的支持。

Web Audio API不需要浏览器支持每个编解码器,这就是每个浏览器对编解码器的支持不同的原因。但是浏览器必须用decodeAudioData()拒绝EncodingError,以防它们无法解码。 Safari只会拒绝某些文件的null,这是一个错误。如果您希望Safari的行为始终如一,则可以使用standardized-audio-context来解决此问题。