AudioContext解码Safari上的AudioData问题



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

解码音频数据空时出错

我可能缺少什么?

到目前为止,Safari仍然不支持使用decodeAudioData()解码OGG文件。由于每个浏览器都支持不同的编解码器,我只能推荐解码!直接在浏览器中检查对各种文件类型的支持。

Web Audio API不要求浏览器支持每个编解码器,这就是为什么不同浏览器对编解码器的支持不同。但浏览器需要用EncodingError拒绝decodeAudioData(),以防它们无法解码某些内容。Safari只是拒绝某些文件的null,这是一个错误。如果你想让Safari保持一致,你可以使用标准化的音频上下文,这是有解决方案的。

最新更新