使用 Android 10 播放捕获集成 audioRecorder.read() 正在读取空记录

问题描述

我正在尝试使用 android palyback 捕获来录制 android 系统音频,但总是得到空记录 -

    int sampleRate = 44100;
    int channelConfig = AudioFormat.CHANNEL_IN_MONO;
    int audioFormatVal = AudioFormat.ENCODING_PCM_16BIT;
    int minBufSize = AudioRecord.getMinBufferSize(sampleRate,channelConfig,audioFormatVal);

    AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration
        .Builder(mediaProjection)
        .addMatchingUsage(AudioAttributes.USAGE_MEDIA)
        .addMatchingUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
        .addMatchingUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING)
        .addMatchingUsage(AudioAttributes.USAGE_UNKNowN)
        .addMatchingUsage(AudioAttributes.USAGE_GAME)
        .build();

    AudioFormat audioFormat = new AudioFormat.Builder()
        .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
        .setSampleRate(sampleRate)
        .setChannelMask(AudioFormat.CHANNEL_IN_MONO)
        .build();
    mIsShareAudio = true;
    mAudioRecord = new AudioRecord.Builder()
        .setAudioPlaybackCaptureConfig(config)
        .setAudioFormat(audioFormat)
        .setBufferSizeInBytes(minBufSize)
        .build();
    mAudioRecord.startRecording();
    int bufferSize = minBufSize / 2;
    short sData[] = new short[bufferSize];
    boolean mIsShareAudio = true;
    while (mIsShareAudio) {
        mAudioRecord.read(sData,sData.length);
        mLogger.log(LogPriority.INFO,TAG,"after fill=" + Arrays.toString(sData));

Arrays.toString(sData) 总是打印 0 作为输出。能否请你帮忙? 谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)