【问题标题】:Android audioRecord.read buffer concatenate to make waveformAndroid audioRecord.read 缓冲区连接以制作波形
【发布时间】:2013-08-01 19:16:38
【问题描述】:

我正在尝试从麦克风手动构建音轨并查看其波形。

我是这样读取缓冲区的:

 double[] bufferSet = new double[blockSize*2]

 //in a while loop
 int bufferReadResult = audioRecord.read(buffer, 0, blockSize);

然后根据读取结果建立我自己的缓冲区。

所以bufferSet 看起来有点像这样

//First second
j=1;

for(i=0; i<blockSize; i++) {
    bufferSet[j*blockSize+i] = buffer[i];
}

//Second Second
j=2;

for(i=0; i<blockSize; i++) {
    bufferSet[j*blockSize+i] = buffer[i];
}

所以在这一点上,我希望有一个 bufferSet 有 2 秒长的音频。问题是当我绘制它时,我可以清楚地看到连接波形的 3 个缓冲区中的每一个突然变化的部分。

缓冲区是否有特定的填充顺序?它是从 0(最早的时刻到最后一个单位(最晚的时间))按时间计算还是相反?

所以音频波形看起来像这样(2 秒)。您可以清楚地看到中间的波形突然发生了变化,因此它没有连接到前一秒的数据

我如何正确读取缓冲区,以便当我将它与以前的缓冲区连接时,它会按照接收时间的顺序产生连续波形?

【问题讨论】:

    标签: java android audiorecord


    【解决方案1】:
    double[] bufferSet = new double[blockSize*2]
    //First second
    j=1;
    ...
    bufferSet[j*blockSize+i] = buffer[i];
    ...
    //Second Second
    j=2;
    

    你不想要j=0 第一秒,j=1 第二秒吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2021-07-24
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2018-07-17
      相关资源
      最近更新 更多