【问题标题】:<AudioRecord> Could not get audio input for record source 1<AudioRecord> 无法获取记录源 1 的音频输入
【发布时间】:2018-05-14 13:43:04
【问题描述】:

我正在尝试获取 AudioRecord 实例,但出现错误:

无法获取记录源 1 的音频输入

创建 AudioRecord 实例时出错:初始化检查失败。

初始化原生 AudioRecord 对象时出现错误代码 -20。

这是我的示例代码:

public class AudioCapturer {
    AudioRecord recorder;
    private int channelConfig = AudioFormat.CHANNEL_IN_STEREO;
    private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
    private static final int AUDIO_SAMPLE_RATE = 8000;
    private static int[] mSampleRates = new int[] { 8000, 11025, 22050, 44100 };
    int bufferSize = AudioRecord.getMinBufferSize(mSampleRates[3], channelConfig, audioFormat);


    protected void Start() {
        new Thread(new Runnable() {
                public void run() {
                    recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, mSampleRates[3], channelConfig, audioFormat, bufferSize);
                    Log.v("RECORDER","" +recorder.getState());
                    recorder.startRecording();

                    while(recorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING)
                    {
                        byte [] buffer = new byte[bufferSize];
                        Log.v("READ RESULT","" + recorder.read(buffer, 0, buffer.length));
                    }
                }
            }).start();
    }
}

我添加了权限,但结果还是一样。
我的手机API版本是18。

【问题讨论】:

  • 您确定API版本和权限吗?听起来像是一个已知问题。请添加您的权限并构建 gradle 代码
  • 是的,我是。我放入 AndroidManifest.xml

标签: java android android-studio android-studio-3.0 audiorecord


【解决方案1】:

很可能你可以解决改变的问题

private int channelConfig = AudioFormat.CHANNEL_IN_STEREO;

private int channelConfig = AudioFormat.CHANNEL_IN_MONO;

更好的解决方案是遍历所有可能的参数值组合以选择工作组合。见AudioRecord object not initializing

【讨论】:

  • 结果还是一样。我在其他 Android 版本上检查过,它适用于 Android 7.0 但不适用于 4.3
  • 您是否尝试过测试不同的参数组合?
猜你喜欢
  • 2011-06-15
  • 2011-06-25
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2012-06-20
  • 1970-01-01
相关资源
最近更新 更多