JavaScript - 如何将音频文件加载到 readAsArrayBuffer 中?

JavaScript - How to load an audio file into readAsArrayBuffer?

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

然后会产生此错误:

Uncaught (in promise) DOMException: Unable to decode audio data

它加载的大小为 0,我相信这就是它产生此错误的原因。

当我让用户选择要加载的文件时,一切正常:

document.getElementById('open-file').onchange = function(evt) {
    let file = evt.target.files[0];

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

正如 Patrick Evans 所说,由于存在安全风险,这根本不可能。真遗憾,您可以使用 HTML5 轻松播放音频,但无法加载音频文件并将它们作为数组缓冲区读取。