我有一个AudioBuffer存储为变量,我希望由Audio元素播放它。这是我当前无法正常运行的代码:
const blob = new Blob(audioBuffer.getChannelData(1), { type: "audio/wav" });
const url = window.URL.createObjectURL(blob);
audioElement.src = url;
[当我尝试播放audioElement时,出现以下错误:
未捕获(承诺)DOMException:该元素没有受支持的源。
有人对如何解决这个问题有任何想法吗?预先感谢!
AudioBuffer是PCM数据,尚未编码为WAV。如果您需要WAV,则应获取一个库来为您进行编码,例如https://www.npmjs.com/package/audiobuffer-to-wav
包括上面的代码后(您可以从index.js中复制audioBufferToWav函数及其在下面调用的函数)。>>
const blob = new Blob([audioBufferToWav(audioBuffer.getChannelData(1))], { type: "audio/wav" }); const url = window.URL.createObjectURL(blob); audioElement.src = url;
下面使用Web Audio API直接播放PCM AudioBuffer。
var myArrayBuffer = audioBuffer;
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var source = audioCtx.createBufferSource();
source.buffer = myArrayBuffer;
source.connect(audioCtx.destination);
source.start();