我正在使用Recorder.js和RecorderWorker.js来录制音频。我们知道文件类型是.wav,文件大小非常大。我尝试了一个解决方案,它来自之前在stackoverflow上提出的类似问题,但仍然是1分钟音频,文件大小> = 6.5 MB。而不是我使用单通道的两个通道。以下是我在javascript中疯狂的变化。
在recorder.js - >
中function record(inputBuffer){
for (var channel = 0; channel < 1; channel++){
recBuffers[channel].push(inputBuffer[channel]);
}
recLength += inputBuffer[0].length;
}
function exportWAV(type){
var bufferL = mergeBuffers(recBuffers[0], recLength);
var dataview = encodeWAV(bufferL);
var audioBlob = new Blob([dataview], { type: type });
this.postMessage(audioBlob);
}
function getBuffer(){
var buffers = [];
for (var channel = 0; channel < 1; channel++){
buffers.push(mergeBuffers(recBuffers[channel], recLength));
}
this.postMessage(buffers);
}
function interleave(inputL, inputR){
var length = inputL.length;
var result = new Float32Array(length);
var index = 0,
inputIndex = 0;
while (index < length){
result[index++] = inputL[inputIndex];
//result[index++] = inputR[inputIndex];
inputIndex++;
}
return result;
}
/* channel count */
view.setUint16(22, 1, true);
/* block align (channel count * bytes per sample) */
view.setUint16(32, 2, true);
在recorderWorker.js中 - &gt;
formatter: function () {
return '<table style="text-align: center"><tr><td>' + (Highcharts.dateFormat('%Y-%b-%e', this.x)) + '</td></tr><tr><td>Price: ' + this.y + ' </td></tr></table>';
},
我尝试使用libmp3lame.js将其转换为mp3文件类型,但它很慢,加上我无法使用此录制&gt; 2分钟音频。
我要问的是,首先,我做错了什么因为尺寸没有减少?第二,还有其他方法可以减小尺寸吗?