【问题标题】: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 平台,所以我不知道他们通常是如何做事的。

标签: android microphone audio


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多