我将两个 16 位 PCM 样本混合到一个短缓冲区中。
// This is our buffer for PCM audio data
mp3Buffer = new short[minBufferSize];
wavBuffer = new short[minBufferSize];
mixedBuffer = new short[minBufferSize];
我正在用来自 mp3 和 wav 文件的样本填充这些缓冲区。我发现 wav 文件将始终是单声道的,而 mp3 将始终是立体声的。
我读过,如果您“只需分配两倍于原始 PCM 数据大小的缓冲区,并且对于原始缓冲区中的每个样本,将其两次放入新缓冲区中”
short[] stereoWavBuffer = new short[minBufferSize];
int k = 1;
for (int j = 0; j < minBufferSize / 2; j += 2)
{
stereoWavBuffer[j] = wavBuffer[j];
stereoWavBuffer[k] = wavBuffer[k];
k += 2;
}
// TO DO - Add the 2 buffers together
for (int i = 0; i < minBufferSize; i++){
mixedBuffer[i] = (short)(mp3Buffer[i] + stereoWavBuffer[i]);
}
track.write(mixedBuffer, 0, minBufferSize);
}
我怎样才能做到这一点?我试过了,但现在的 wav 音频速度正常,但听起来像花栗鼠。