0

我想将 .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

我会错过什么?

4

1 回答 1

0

时至今日,Safari 仍然不支持使用decodeAudioData(). 由于每个浏览器都支持一组不同的编解码器,我只能推荐解码这个!直接在浏览器中检查对各种文件类型的支持。

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

于 2020-01-25T21:14:27.703 回答