【发布时间】:2015-11-24 11:56:53
【问题描述】:
我正在使用网络音频 api 将 n 通道音频文件解码为单独的通道,然后将这些通道渲染到画布上以直观地创建频率计。
我正在使用 decodeAudioData 解码字节数组缓冲区,然后分配给单独函数中的音频缓冲区源节点。
// load the specified sound
function loadSound(url) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
// When loaded decode the data
request.onload = function () {
// decode the data
context.decodeAudioData(request.response, function (buffer) {
// when the audio is decoded play the sound
holdingBuffer = buffer;
setupSound(buffer);
}, onError);
}
request.send();
}
我遇到的问题是,当我尝试解码大约 60mb + 的音频时,由于内存空间不足,浏览器会崩溃。decodeAudioData 函数非常耗内存!
我想知道是否有人对更有效地解码更大的音频文件有任何经验?
【问题讨论】:
-
您在移动设备上运行吗? 60 MB(压缩)很大,但对于台式机来说不是那么大。
标签: javascript google-chrome audio web-audio-api