我正在尝试根据左右声道中录制内容的差异来录制和处理音频数据。为此,我使用 Audio Record 类,以 MIC 作为输入和 STEREO 模式。
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);
我的问题是我在两个 channel 中得到的数据完全相同。 (交替样本被分开以获得单独的 channel 输入)。请帮忙。我不确定为什么会这样。
最佳答案
使用这个配置:
private int audioSource = MediaRecorder.AudioSource.MIC;
private static int sampleRateInHz = 48000;
private static int channelConfig = AudioFormat.CHANNEL_IN_STEREO;
private static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
音频数据中的数据如下。
leftChannel data: [0,1],[4,5]...
rightChannel data: [2,3],[6,7]...
所以你需要分离数据。
readSize = audioRecord.read(audioShortData, 0, bufferSizeInBytes);
for(int i = 0; i < readSize/2; i = i + 2)
{
leftChannelAudioData[i] = audiodata[2*i];
leftChannelAudioData[i+1] = audiodata[2*i+1];
rightChannelAudioData[i] = audiodata[2*i+2];
rightChannelAudioData[i+1] = audiodata[2*i+3];
}
希望这对您有所帮助。
关于android - 立体声录音在左右声道中提供相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634477/