问题
Does anybody know how to fix this warning message?
07-14 10:38:55.411 V/tracker-audiotest(22426): Recording Thread::run(): start audioRecord recording. 07-14 10:45:51.490 "W/AudioTrack( 607): AUDIO_OUTPUT_FLAG_FAST denied by client due to mismatching sample rate (44100 vs 48000)"
When I test the audio latency on Android 4.4, I face a suddenly delay increasing after I saw this warning message. But I don't change the sample rate during the test and the initial setting is in 48kHz. This warning message happen after 7 minutes recording started.
You can test this project on your device if needed. The project is in GitHub:
https://github.com/garyyu/OpenSL-ES-Android-DelayTest
回答1:
The AUDIO_OUTPUT_FLAG_FAST is denied because you are using a different rate than the one supported in hardware. You need to query the hardware supported sampling rate and record at that rate rather than hard code it to 48kHz.
回答2:
You may try to use Java function interface:
AudioManager myAudioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
nativeSampleRate = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
to retrieve the hardware default sample rate on your phone, use that to create the player.
Also try to use:
nativeSampleBufSize =myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
to get default audio buffer size( it is in frames ) and use that for your playback.
You could look at the JNI sample code audio-echo if JNI is ok for you.
回答3:
Try changing the sample rate at
frameworks/base/
frameworks/av/
hardware/libhardware
locations.
default sample rate is 44100 try setting the sample rate you want (your audio files have). it will work.
cheers.
来源:https://stackoverflow.com/questions/24729488/audiotrack-audio-output-flag-fast-denied-by-client-due-to-mismatching-sample-ra