AudioTrack: AUDIO_OUTPUT_FLAG_FAST由于采样率不匹配而被客户端拒绝



有人知道如何修复这个警告消息吗?

07-14 10:38:55.411 V/tracker-audiotest(22426): Recording Thread::run(): start audioRecord Recording07-14 10:45:51.490 "W/AudioTrack(607): AUDIO_OUTPUT_FLAG_FAST由于采样率不匹配而被客户端拒绝(44100 vs 48000)"

当我在Android 4.4上测试音频延迟时,我看到这个警告信息后,我面临突然增加的延迟。但是我在测试期间没有改变采样率,初始设置是48kHz。开始录音7分钟后出现此警告信息。

如果需要,您可以在您的设备上测试此项目。该项目位于GitHub:

https://github.com/garyyu/OpenSL-ES-Android-DelayTest

AUDIO_OUTPUT_FLAG_FAST被拒绝,因为您使用的速率与硬件支持的速率不同。您需要查询硬件支持的采样率并以该速率记录,而不是将其硬编码为48kHz。

您可以尝试使用Java函数接口:

AudioManager myAudioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
nativeSampleRate = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);

来检索手机上的硬件默认采样率,使用它来创建播放器。
还可以尝试使用:

nativeSampleBufSize = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);

获取默认的音频缓冲区大小(以帧为单位),并将其用于播放。

如果JNI适合您,您可以查看JNI示例代码audio-echo。

尝试在

更改采样率

框架/基地/
框架/av/
硬件/libhardware

位置。

默认采样率是44100,试着设置你想要的采样率(你的音频文件有)。会成功的。

欢呼。

最新更新