为啥我会收到 IllegalArgumentException:不支持的频道配置?
Posted
技术标签:
【中文标题】为啥我会收到 IllegalArgumentException:不支持的频道配置?【英文标题】:Why am I getting IllegalArgumentException: Unsupported channel configuration?为什么我会收到 IllegalArgumentException:不支持的频道配置? 【发布时间】:2014-07-07 21:39:54 【问题描述】:我正在使用 AudioRecord 从 android 上的耳机插孔收集音频数据,如下所示:
int frequency = 44100;
int channelConfiguration = AudioFormat.CHANNEL_OUT_MONO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
int bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.Audiosource.MIC, frequency, channelConfiguration, audioEncoding, bufferSize);
audioRecord.startRecording();
但是,我收到一个错误提示
java.lang.IllegalArgumentException: Unsupported channel configuration.
我没有在网上找到任何有用的东西,所以我想知道是否其他人也有这个问题。
【问题讨论】:
因为它不支持频率、频道配置和编码的组合。我看到帖子说模拟器只支持 8K Hz。你用的是真硬件吗? 也可能是您尝试使用AudioFormat.CHANNEL_OUT_MONO
从输出中记录。
@GabeSechan 你好,我用的是 smasung Galaxy 2,所以 44100 应该没问题。
@CaseyB 我应该尝试使用 AudioFormat.CHANNEL_OUT_STEREO 吗?
【参考方案1】:
我不知道这是否是 CaseyB 的意思,但我将 AudioFormat.CHANNEL_OUT_MONO 更改为 AudioFormat.CHANNEL_IN_MONO。这使错误消失了。
【讨论】:
是的,我就是这个意思。 对我来说,它实际上产生了与 CHANNEL_IN_MONO 相同的错误,并且与 CHANNEL_IN_STEREO 一起工作正常【参考方案2】:当您使用录音时,AudioFormat.CHANNEL_IN_MONO。 使用播放时,AudioFormat.CHANNEL_OUT_MONO。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于为啥我会收到 IllegalArgumentException:不支持的频道配置?的主要内容,如果未能解决你的问题,请参考以下文章