我正在尝试捕获用户上传的音频,将其转换为Blob,然后使用waveurfer.js显示波形。我在这里遵循此说明https://bl.ocks.org/nolanlawson/62e747cea7af01542479这是代码// Convert audio to Blob $('#audioFileInput').on('change', function () { var file = $('#audioFileInput')[0].files[0]; var fileName = file.name; var fileType = file.type; var fileReader = new FileReader(); fileReader.onloadend = function (e) { var arrayBuffer = e.target.result; blobUtil.arrayBufferToBlob(arrayBuffer, fileType).then(function (blob) { console.log('here is a blob', blob); console.log('its size is', blob.size); console.log('its type is', blob.type); surfTheBlob(blob); }).catch(console.log.bind(console)); }; fileReader.readAsArrayBuffer(file); });但是它说blobUtil.arrayBufferToBlob(...).then is not a function另一个问题是,由于用户可能自己上载了音频,因此音频类型可能会有所不同,预期来自本地设备的音频记录器。有人可以帮忙吗?谢谢。
2 回答

慕工程0101907
TA贡献1887条经验 获得超5个赞
File像您在input.filesFileList中获得的对象一样,一个对象已经是Blob:
inp.onchange = e =>
console.log(inp.files[0] instanceof Blob) // true
<input type="file" id="inp">
因此,您真正需要的就是直接将此文件传递给您的库:
$('#audioFileInput').on('change', function () {
var file = this.files[0];
surfTheBlob(file);
});
添加回答
举报
0/150
提交
取消