立即學習:https://edu.csdn.net/course/play/6842/172189?utm_source=blogtoedu
# 記錄一下今天踩到的兩個坑:
1. Android 10 系統上,會出現下面這個問題:
E/AudioEffect: set(): AudioFlinger could not create effect c2e5d5f0-94bd-4763-9cac-4e234d06839e / ec7178ec-e5e1-4432-a3f4-4657e6795210, status: -1
E/libOpenSLES: Effect initCheck() returned -19
E/libOpenSLES: EnvironmentalReverb effect initialization failed
首先排查一下權限是否正確獲取到了,如果權限配置正確,這個問題可以忽略掉,不影響最後的播放。
2. 無法播放出聲音
因爲在播放的時候,每次 Enque 進去的是獲取到的 size 的大小,代碼如下:
int size = getPcmData(&mBuffer);
if (nullptr != mBuffer) {
result = (*mDataQueue)->Enqueue(mDataQueue, mBuffer, size);
}
發現size的值始終爲1,排查後發現是執行
`fread` 時,將 count 和 size 參數寫反了,寫成下面這樣就可以了:
size = fread(mOutBuffer, 1, 44100 * 2 * 2, mInput);
也很奇怪爲什麼寫反了就讀不到那麼多數據,不應該是 count * size 的嗎?寫反了竟然不對。
算是踩到的兩個坑,希望能幫助到遇到相同問題的同學