OpenSLES: W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client; transfer 1, track 44100 Hz, output 48000 Hz的問題


今天在使用OpenSLES 進行音頻播放的時候,系統提示了這樣一句話:

W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client; transfer 1, track 44100 Hz, output 48000 Hz

由於使用的是warning 標識,個人覺得有必要了解一下。

從它的提示看,大概是說輸入和輸出的音頻采樣率不一致,剛開始感到很奇怪,因為我在播放PCM數據前,已經利用FFmpeg對原始數據進行音頻重采樣了,確保播放的PCM數據采樣率就是 44100, 所以應該不是我code的問題,后來在

AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client due to mismatching sample rate

這篇文章中得到了答案:

 

 

 大概意思就是說,你輸入給OpenSLES 的音頻的采樣率與硬件默認播放的音頻采樣率不一致。於是按照他給的辦法,看了一下我手頭這款設備的默認的音頻采樣率:

AudioManager myAudioMgr = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
        String nativeSampleRate = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
        Log.i(TAG, "hardware support samplerate: " + nativeSampleRate);

Log:

 

那看來就是這個問題了,於是我將FFmpeg重采樣的采樣率修改成48000, 將OpenSLES 播放前配置也改成48000,果然沒有這條錯誤信息了。

不過這個改動其實沒有必要,44100 支持的比較廣泛,這里也就是提示不一致罷了,所以不用擔心 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM