安卓立体声录音。来自两个不同渠道的完全相同的数据

Posted

技术标签:

【中文标题】安卓立体声录音。来自两个不同渠道的完全相同的数据【英文标题】:Android stereo recording. Exact same data from two different channels 【发布时间】:2013-08-01 16:57:29 【问题描述】:

我正在尝试通过我的 Galaxy nexus 手机进行立体声录音。根据其规格,该手机内置了 2 个麦克风。如果我错了,请纠正我,当设备上支持立体声录音时,将使用 2 个麦克风

我在初始化和使用 AudioRecord 类录制立体声音频时没有收到任何错误。但是我从两个音频通道得到的结果是完全一样的。有没有人遇到过同样的问题?有任何想法吗?谢谢你。以下代码 sn-p 是我用于立体声录音设置的代码:

            int bufferRead = 0;
        int bufferSize = AudioRecord.getMinBufferSize(44100,
                AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
        // if doesn't support that sampling frequency
        if (bufferSize == AudioRecord.ERROR_BAD_VALUE
                || bufferSize == AudioRecord.ERROR) 
            Log.i(this.toString(), "doesn't support sampling rate of "
                    + frequency);
            throw new IllegalArgumentException(
                    "entered unsupported audio sampling rate");
        
        // grabbing 16-bit pcm audio
        short[] tempBuffer = new short[bufferSize];
        AudioRecord recordInstance = new AudioRecord(MediaRecorder.Audiosource.MIC,
                44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT,
                bufferSize);
        recordInstance.startRecording();

【问题讨论】:

您将AudioFormat.CHANNEL_IN_MONO 传递给AudioRecord 构造函数。 抱歉,我在写问题时打错了字。已经改了。我很确定我可以恢复立体声数据,因为我可以很好地将它们分成两个通道。 在过去几年我使用过的每部带有两个麦克风的手机上,请求 2 个通道(即CHANNEL_IN_STEREO)就足够了。我能想到的一个例外是 XPeria P,如果您使用 CAMCORDER 音频源,它会为您提供双单声道,因为摄像头机制会干扰辅助麦克风。不过,我从未使用过 OMAP 平台,所以我不知道他们通常是如何做事的。 【参考方案1】:

如果我错了,请纠正我,当设备支持立体声录音时,将使用 2 个麦克风

在我对数十种设备进行测试的 3 年经验中,我发现情况并非如此。

主麦克风单独用于单声道和立体声录音在我使用过的各种 android 设备中 - 从低成本大众型号到旗舰.

其中一个原因是主麦克风的质量更好(更灵敏、噪音更小等)并且比辅助麦克风更昂贵。

【讨论】:

以上是关于安卓立体声录音。来自两个不同渠道的完全相同的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用音频工具 sox,我如何确定立体声录音是不是实际上是单声道?

IOS渠道追踪方式

IOS渠道追踪方式

如何在平板电脑/智能手机上启用立体声录音,尽管有两个内置麦克风,但只产生单声道?

安卓Android开发:使用AudioRecord录音将录音保存为wav文件使用AudioTrack保存录音

安卓Android开发:使用AudioRecord录音将录音保存为wav文件使用AudioTrack保存录音