我遇到了一些问题,无法加载音频文件并将其放入 readAsArrayBuffer 中。我不想让用户选择文件,我只想本地加载一个文件,像这样:
let file = new File('../music/song.mp3');
let reader = new FileReader();
reader.onload = function(e) {
playSound(e.target.result);
}
reader.readAsArrayBuffer(file);
当我执行以上操作时,出现以下错误:
Uncaught TypeError: Failed to construct 'File': 2 arguments required, but only 1 present.
因此我尝试了这个方法:
let file = new File([''], '../music/song.mp3');
然后就会出现这个错误:
未捕获(在承诺中)DOM异常:无法解码音频数据
我相信它加载的大小为0,这就是为什么会出现这个错误。
当我让用户选择要加载的文件时,一切都正常:
document.getElementById('open-file').onchange = function(evt) {
let file = evt.target.files[0];
有人知道如何修复这个问题吗?
fetch('../music/song.mp3').then(r=>r.arrayBuffer()).then(buf=>audioContext.decodeAudioData(buf).then(enjoyTheAudioBuffer);
。 - Kaiido