【问题标题】:"Could not get audio input for record source 1" when trying to initialize AudioRecord尝试初始化 AudioRecord 时“无法获取记录源 1 的音频输入”
【发布时间】:2011-06-25 03:42:21
【问题描述】:

我在尝试初始化 AudioRecord 对象时不断收到此错误,以尝试使用 Eclipse 使用模拟器录制声音。

我尝试了各种位采样率,8000 是唯一有效的,但错误继续出现。我尝试过各种版本的 sdk,1.5、1.6、2、2.2 和 2.3.1。 (以及与 AVD 的组合)。

代码如下:

       Log.v(TAG, "About to initialize recording");
   //int[] samplingRates = {44100, 22050, 16000, 11025, 8000};
   int[] samplingRates = {8000};

    for (int i = 0; i < samplingRates.length; ++i)
    {
        try
        {
            Log.d(TAG,"Trying sampling rate: " + samplingRates[i]);
            int min = AudioRecord.getMinBufferSize(samplingRates[i], 
                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    //AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);
            Log.d(TAG,"MinBufferSize: " + min);

            AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.MIC, samplingRates[i],
                    AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, min);
            if (record.getState() == AudioRecord.STATE_INITIALIZED)
            {
                Log.d("Recorder", "Audio recorder initialised at " + record.getSampleRate());
                return record;
            }
            record.release();
            record = null;
        }
        catch (IllegalArgumentException e)
        {
            // Try the next one.
            Log.d(TAG,"Initialization failed");
        }
    }
    // None worked.
    return null;

错误发生在实例化、AudioRecord record = new 等时。

有没有人遇到过同样的问题,这似乎是一个直截了当的请求,所以如果这是一个错误,我会感到惊讶,特别是因为我无法让它与不同的版本一起使用。

我创建了具有录音功能的 AVD。我还有什么需要配置的吗?

我在同一问题上看到了一些其他帖子,但没有回复。

提前致谢

克里斯

【问题讨论】:

标签: android


【解决方案1】:

对于三星设备上的我来说,只需更改即可 AudioFormat.CHANNEL_IN_MONO

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize);

【讨论】:

    【解决方案2】:

    你的问题可能实际上是双重的。首先,您必须为 AudioRecord 获取所有参数,也就是说,我可以看到您尝试了所有不同的采样率和通道配置,但是您是否尝试了不同的位深度?如果你没有把它弄得恰到好处,那就行不通了。此外,似乎某些 android 设备似乎报告了错误的 minBufferSize。

    但是,我认为您遇到的实际问题是 AVD 无法录制音频/视频(即使您这样配置它们可能不会抱怨): http://developer.android.com/guide/topics/media/index.html

    从第三段开始:

    请注意,模拟器没有硬件来捕获音频或视频,但实际的移动设备可能会提供这些功能,可通过 MediaRecorder 类访问。

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 2011-06-15
      • 2011-05-08
      • 1970-01-01
      • 2022-01-26
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      相关资源
      最近更新 更多