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

时间:2013-12-17 12:43:00

标签: android audio android-audiorecord

我正在尝试根据左右声道录制内容的差异来录制和处理音频数据。为此我使用Audio Record类,MIC作为输入和STEREO模式。

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,
                                    AudioFormat.CHANNEL_IN_STEREO,
                                    AudioFormat.ENCODING_PCM_16BIT, bufferSize);

我的问题是我在两个频道中都获得完全相同的数据。 (交替的样本被分开以获得单独的通道输入)。请帮忙。我不确定为什么会这样。

3 个答案:

答案 0 :(得分:2)

使用此配置:

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];
}

希望这有用。

答案 1 :(得分:1)

这是一个捕获立体声音频的工作示例(使用三星Galaxy S3 4.4.2 SlimKat测试):

private void startRecording() {
    String filename = Environment.getExternalStorageDirectory().getPath()+"/SoundRecords/"+System.currentTimeMillis()+".aac";
    File record = new File(filename);
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setAudioEncodingBitRate(128000);
    recorder.setAudioSamplingRate(96000);
    recorder.setAudioChannels(2);
    recorder.setOutputFile(filename);
    t_filename.setText(record.getName());
    try {
        recorder.prepare();
        recorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

如果您的手机支持立体声捕捉,那么这应该有效:)

答案 2 :(得分:0)

您无法在设备上以这种方式获得立体声输入。

尽管Nexus 4有两个麦克风,但它们并非用于立体声录音,而是可能会消除背景噪音。

请参阅https://groups.google.com/forum/#!topic/android-platform/SptXI964eEI,其中讨论了音频系统的各种低级修改,以尝试完成立体声录制。