学習ノート(01):FFmpeg製Android万能オーディオプレーヤー-OpenSL ES紹介とPCMデータ再生を実現


今すぐ学習:https://edu.csdn.net/course/play/6842/172189?utm_source=blogtoedu
今日踏んだ2つの穴を記録します.
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ではないのか不思議です.書き間違えたとは.
 
踏んだ二つの穴で、同じ問題に直面した同級生を助けたい.