减少录制的音频.wav文件大小

时间:2015-04-29 09:20:08

标签: javascript audio-recording recorder.js

我正在使用Recorder.jsRecorderWorker.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分钟音频。

我要问的是,首先,我做错了什么因为尺寸没有减少?第二,还有其他方法可以减小尺寸吗?

1 个答案:

答案 0 :(得分:0)

我找到了两种方法来缩小导出的wav文件的大小:

  1. 初始化新的记录器source
  2. 时使用单个频道

rec = new Recorder(input,{numChannels:1})

  1. 或者您可以降低采样率以进一步减小大小,source