android - 立体声录音在左右声道中提供相同的数据

标签 android audio android-audiorecord

我正在尝试根据左右声道中录制内容的差异来录制和处理音频数据。为此,我使用 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/

相关文章:

java - 在 ListView 项目上单击,将 Google map 相机移动到指定标记

android - 这个 Android 组件叫什么?

reactjs - 需要关于大量静态 Assets 的 PWA 建议

android - AudioRecord 不适用于摩托罗拉里程碑

android - 如何延迟播放 AudioRecord

Android AudioRecord 初始化失败

android - 我应该选择 x86_64 进行测试,而不是选择 "recommended"x86 作为虚拟设备系统镜像吗?

android - 将文本从网站共享到 android 应用程序的方式是什么,就像在 android sdk 中发送 Intent 一样

iPhone SDK修剪音频文件

audio - 向 FFMPEG 添加 SPEEX 代码支持