AudioTrack:由于采样率不匹配,客户拒绝了AUDIO_OUTPUT_FLAG_FAST

时间:2014-07-14 04:21:37

标签: audio real-time low-latency

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

  

07-14 10:38:55.411 V / tracker-audiotest(22426):录制Thread :: run():启动audioRecord录制。   07-14 10:45:51.490“W / AudioTrack(607):由于采样率不匹配(44100 vs 48000),客户拒绝了AUDIO_OUTPUT_FLAG_FAST”

当我在Android 4.4上测试音频延迟时,在看到此警告消息后,我突然意外地延迟了。但是我在测试期间没有改变采样率,初始设置是48kHz。录制开始7分钟后会出现此警告消息。

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

  

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您可以尝试使用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

答案 2 :(得分:0)

尝试更改

的采样率
  

框架/碱/
  框架/ AV /
  硬件/ libhardware

位置。

默认采样率为44100尝试设置您想要的采样率(您的音频文件有)。它会起作用。

欢呼声。