jjzjj

android - 尝试初始化 AudioRecord 时出现 "Could not get audio input for record source 1"

coder 2023-12-05 原文

我在尝试初始化 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。还有什么我必须配置的吗?

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

提前致谢

克里斯

最佳答案

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

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

来自第三段:

Note that the emulator doesn't have hardware to capture audio or video, but actual mobile devices are likely to provide these capabilities, accessible through the MediaRecorder class.

关于android - 尝试初始化 AudioRecord 时出现 "Could not get audio input for record source 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962536/

有关android - 尝试初始化 AudioRecord 时出现 "Could not get audio input for record source 1"的更多相关文章

随机推荐