Javascript 如何将Blob转换为Int16Array
我有一个Blob中的WAV文件,为了将其转换为MP3,我需要先将其转换为Int16Array(按照这里的示例:) 例如Javascript 如何将Blob转换为Int16Array,javascript,mp3,Javascript,Mp3,我有一个Blob中的WAV文件,为了将其转换为MP3,我需要先将其转换为Int16Array(按照这里的示例:) 例如 这是可能的吗?如果您知道数据实际上是一个16位ints的blob,那么是的,这是可能的: 通过FileReader的readAsArrayBuffer(,)将Blob读入ArrayBuffer ArrayBuffer可在FileReader的result属性或onload回调参数的event.target.result属性中找到(见下文) 通过Int16Array构造函数将Ar
这是可能的吗?如果您知道数据实际上是一个16位
int
s的blob,那么是的,这是可能的:
FileReader
的readAsArrayBuffer
(,)将Blob
读入ArrayBuffer
ArrayBuffer
可在FileReader
的result
属性或onload
回调参数的event.target.result
属性中找到(见下文)Int16Array
构造函数将ArrayBuffer
作为Int16Array
查看:
const data = new Int16Array(fr.result);
data
是blob中的数组缓冲区,被视为Int16Array
大致如下:
const fr = new FileReader();
fr.onload = () => {
// It worked
const array = new Int16Array(fr.result);
// ...use the array here...
};
fr.onerror = () => {
// The read failed, handle/report it
};
fr.readAsArrayBuffer(samples);
如果要跨请求重用加载完成处理程序,可以接受event
参数并使用event.target.result
而不是fr.result
:
function loaded(event) {
const array = new Int16Array(event.target.result);
// ...use the array here...
}
// ...
fr.onload = loaded;
您必须使用FileReader API:您成功地解决了这个问题吗?如果下面回答了您的问题(堆栈溢出的工作方式),您可以通过单击旁边的复选标记来“接受”答案,从而将其从未回答的问题列表中删除。但前提是你的问题真的得到了回答;如果没有,您可以向问题添加更多详细信息来解释答案没有解决的问题。现在我可以向上投票:)注意,您还可以使用onload事件参数
.target.result
const fr = new FileReader();
fr.onload = () => {
// It worked
const array = new Int16Array(fr.result);
// ...use the array here...
};
fr.onerror = () => {
// The read failed, handle/report it
};
fr.readAsArrayBuffer(samples);
function loaded(event) {
const array = new Int16Array(event.target.result);
// ...use the array here...
}
// ...
fr.onload = loaded;