有人知道如何修复这个警告消息吗?
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,试着设置你想要的采样率(你的音频文件有)。会成功的。
欢呼。