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

Javascript 减少录制的音频.wav文件大小,javascript,audio-recording,recorder.js,Javascript,Audio Recording,Recorder.js,我正在使用和录制音频。正如我们所知,文件类型将是.wav,并且文件大小非常大。我尝试了一个解决方案,该解决方案是从stackoverflow上先前提出的类似问题中得到的,但仍然适用于1分钟的音频,文件大小>=6.5 MB。我使用的不是两个通道,而是单通道。以下是我在javascript中所做的更改 在recorder.js中-> this.node.onaudioprocess = function(e){ if (!recording) return; var buff

我正在使用和录制音频。正如我们所知,文件类型将是.wav,并且文件大小非常大。我尝试了一个解决方案,该解决方案是从stackoverflow上先前提出的类似问题中得到的,但仍然适用于1分钟的音频,文件大小>=6.5 MB。我使用的不是两个通道,而是单通道。以下是我在javascript中所做的更改

在recorder.js中->

this.node.onaudioprocess = function(e){
      if (!recording) return;
      var buffer = [];
      for (var channel = 0; channel <1; channel++){
          buffer.push(e.inputBuffer.getChannelData(channel));
      }
      worker.postMessage({
        command: 'record',
        buffer: buffer
      });
    }
在recorderWorker.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);
我尝试使用将其转换为mp3文件类型,但速度很慢,而且我无法使用此功能录制>2分钟的音频


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

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

初始化新记录器时使用单个通道, rec=新的Recorderinput,{numChannels:1}

或者你可以降低采样率,进一步缩小尺寸,
问题不在于存储容量。问题是,如果多个用户同时在服务器上录制并上载,则上载可能需要更多时间,因为文件的大小会更大。如果更改audioContext.sampleRate,会怎么样?