JavaScript - 无法将音频文件加载到readAsArrayBuffer中

时间:2017-10-25 21:42:21

标签: javascript file audio arraybuffer

我在加载音频文件然后将其放入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];

有谁知道如何解决这个问题?

1 个答案:

答案 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.