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

问题描述 投票:0回答:1

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

解码音频数据为空时出错

我可能会缺少什么?

angular typescript safari audiocontext webkitaudiocontext
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.