为啥我会收到 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:不支持的频道配置?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误

为啥我会收到这个 TypeError?

为啥我会收到序列化错误?

为啥我会收到错误消息?

知道为啥我会收到此错误吗?

为啥我会收到这种错误验证错误?