安卓立体声录音。来自两个不同渠道的完全相同的数据
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,我如何确定立体声录音是不是实际上是单声道?
如何在平板电脑/智能手机上启用立体声录音,尽管有两个内置麦克风,但只产生单声道?