我在加载音频文件然后将其放入readAsArrayBuffer时遇到问题。我不希望用户选择文件,我只是想让它在本地加载一个文件:
let file = new File('../music/song.mp3');
let reader = new FileReader();
reader.onload = function(e) {
playSound(e.target.result);
}
reader.readAsArrayBuffer(file);
当我执行上述操作时,出现以下错误:
未捕获的TypeError:无法构造“文件”:需要2个参数,但只有1个存在。
所以我试试这个:
let file = new File([''], '../music/song.mp3');
然后产生此错误:
未捕获(在承诺中)DOMException:无法解码音频数据
它加载的大小是0,我相信这就是它产生这个错误的原因。
当我让用户选择要加载的文件时,一切正常:
document.getElementById('open-file').onchange = function(evt) {
let file = evt.target.files[0];
有谁知道如何解决这个问题?
答案 0 :(得分:0)
As Patrick Evans stated, it's not at all possible because of security risks. Such a shame as you can easily play audio with HTML5, but you can't load the audio files and read them as an array buffer.