我想将.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上,正在触发错误:
解码音频数据为空时出错
我可能会缺少什么?
答案 0 :(得分:0)
到目前为止,Safari仍不支持使用decodeAudioData()
解码OGG文件。由于每种浏览器都支持不同的编解码器集,所以我只能建议Decode this!直接在浏览器中检查各种文件类型的支持。
Web Audio API不需要浏览器支持每个编解码器,这就是每个浏览器对编解码器的支持不同的原因。但是浏览器必须用decodeAudioData()
拒绝EncodingError
,以防它们无法解码。 Safari只会拒绝某些文件的null
,这是一个错误。如果您希望Safari的行为始终如一,则可以使用standardized-audio-context来解决此问题。