【发布时间】:2017-09-21 23:10:33
【问题描述】:
我已经查看了与 FileReader 和 readAsArrayBuffer() 相关的所有类似问题,但没有任何运气。
我正在尝试使用 Web Audio API 读取本地 mp3 文件并使用 FileReader 对其进行处理,以便将其用于某些音乐可视化。
这是我目前拥有的:
var file = "../../audio/magic_coldplay.mp3";
var fileReader = new FileReader();
fileReader.onload = function (e) {
var fileResult = e.target.result;
visualizer.start(fileResult);
};
fileReader.onerror = function (e) {
debugger
};
fileReader.readAsArrayBuffer(file);
我收到错误:“无法在 'FileReader' 上执行 'readAsArrayBuffer':参数 1 不是 'Blob' 类型。”
所以我猜文件不是 Blob。我在网上看到的示例让用户上传自己的 mp3 文件。如何使用本地 mp3 进行这项工作?
感谢您的指点!
【问题讨论】:
-
你叫什么本地?在你的服务器上?所以是的
file这里是一个字符串,远离文件或Blob...如果这个字符串表示指向文件的有效URI,那么你可以做fetch(file).then(r=>r.blob()).then(blob=>fileReader.readAsArrayBuffer(blob)) -
是的,在我的服务器上,现在在本地运行。
-
所以是的,首先获取数据,但实际上,直接将其作为arrayBuffer 获取,甚至不通过fileReader。 (当我的手回到真正的键盘上时,我可能会写一个答案)
-
成功了!所以,只是为了让我了解发生了什么——您正在获取文件字符串,将其转换为 blob,然后将其作为数组缓冲区读取? “甚至不通过 fileReader”是什么意思谢谢!!
标签: javascript web filereader web-audio-api