【问题标题】:reducing recorded audio .wav file size减少录制的音频 .wav 文件大小
【发布时间】:2015-04-29 09:20:07
【问题描述】:

我正在使用Recorder.jsRecorderWorker.js 来录制音频。我们知道文件类型将是 .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);

我尝试使用 libmp3lame.js 将其转换为 mp3 文件类型,但速度很慢,而且我无法使用它录制超过 2 分钟的音频。

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

【问题讨论】:

  • 问题不在于存储容量。问题是如果多个用户同时在服务器上录制和上传,那么上传可能需要更多时间,因为文件的大小会更大。
  • 如果更改 audioContext.sampleRate 会怎样?

标签: javascript audio-recording recorder.js


【解决方案1】:

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

  1. 在初始化新记录器时使用单个通道,source

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多