当前位置: 首页 > 知识库问答 >
问题:

使用MediaRecorder.AudioSource.VOICE_COMMUNICATION录制的音频在某些装有Android 10的设备上为空

段宏毅
2023-03-14

我正在使用以下代码为应用程序中的语音消息录制音频。

MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();

使用MediaRecorder.AudioSource.VOICE_COMMUNICATION而不是MediaRecorder.AudioSource.MIC)在录制预处理干净的音频非常有帮助。

但是,最近我发现一些记录文件为空的问题在最近更新到Android10的一些设备上被报告。应该注意的是,并非所有Android10设备都有这些问题,只有少数设备,即诺基亚6.1和小米A2。

没有错误或异常,只有空的音频输出文件。

如果我使用MediaRecorder.AudioSource.MIC),则看不到问题。

我找到了以下与Android10和VOICE_COMMUNICATIONAndroid10版本包括以下使用VOICE_COMMUNICATION捕获的要求。

基于此,我使用以下代码检查了AcousticEchoCanceler、AutomaticGainControl和NoiseSuppressor的可用性。

AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()

在Android 10的Mi A2和OnePlus 6上发现了相同的结果。这两个设备都显示AcousticEchoCanceler和NoiseSuppressor可用,AutomaticGainControl不可用。

由于并非所有Android设备都存在此问题,我不想再使用MediaRecorder.AudioSource.MIC)。同时,没有错误、异常或差异因素告诉我何时使用MediaRecorder.AudioSource.MIC)。

更新:当谷歌助理在Mi A2上关闭时,问题会得到解决。这可能是指针:https://developer.android.com/guide/topics/media/sharing-audio-input

任何关于这方面的帮助都将不胜感激。

共有1个答案

姬向明
2023-03-14

我最终使用了MediaRecorder。AudioSource.VOICE_RECOGNITION代替MediaRecorder。所有Android版本的audio source . VOICE _ COMMUNICATION。

我们最终在15种不同的设备上进行了采样,发现MediaRecorder.AudioSource.VOICE_RECOGNITION最适合大多数设备,包括高端和中档手机。

据我了解,一些设备上的少数设备所面临的最初问题似乎是原始设备制造商在Android 10和VOICE_COMMUNICATION方面的实施问题https://source.android.com/devices/audio/implement-pre-processing

 类似资料:
  • 我在使用媒体​流式录制API,用于录制用户的麦克风。该代码在chrome windows上运行良好,但在android上,它只会在录制哔哔声后立即停止录制。 如何使API在android设备上工作 我是否遗漏了什么,或者这是Web音频API的错误? 代码如下: 然后我就用这些台词开始录音: 还有这个要停下来玩:

  • 我们需要记录从有线或蓝牙耳机扬声器输出的设备音频。例如,如果用户在后台运行音乐应用程序时听了一些歌曲,我们想录制这首歌。是否可以使用AudioUnit实现输出录制?我们使用PalayAndRecords类别用于共享audio会话,带有AVAudioSessionClass oryOptionMixWith其他人选项。

  • 我试图在Android上使用ExoPlayer创建一个流媒体应用程序。大多数的流工作良好,只有一些他们不播放声音,在某些设备上只。 这是问题吗?如果我必须从头开始构建扩展,是否可以在Windows中完成?在我的PC上安装Linux有点问题。并且有没有任何教程来做它正确,根据我的流信息? ExoPlayer是一个很棒的媒体播放器,但是它确实缺乏文档(或者很难找到)。

  • 我的Android应用程序无法安装在一些“随机”、较旧的API设备上(任何低于API级别25的设备),错误如下: 所以,基本上看起来… API 我见过类似的问题,答案与小写的包名有关。我已经有了。 有人有什么想法吗? 舱单: BTW我用的是Visual Studio 2019和一夫一妻制3.7

  • 我正在开发一个Android应用程序,用于使用媒体记录器录制通话,它适用于某些设备,但不能在7.1.1及更高版本的设备上录制其他人的声音,特别是在moto g设备上。 这是我的媒体记录器代码。 有没有办法实现这一点,请建议

  • 最近,我们在Android应用程序中增加了对Chromecast的支持,但在对各种移动设备(手机和平板电脑)的扩展测试中,发现在许多移动设备上,Flipps应用程序都没有发现Chromecast。在相同的设备上,我们使用了最新版本的官方Chromecast SDK演示应用程序进行测试,该应用程序从https://github.com/googlecast/castvideo-Android下载(主