私は2つのファイルを持っています。mp3がpcmにデコードされてストリームになり、wavもpcmに読み込まれます。サンプルは短いデータ型で保持されています。
オーディオ統計: 44,100 サンプル * サンプルあたり 16 ビット * 2 チャネル = 1,411,200 ビット/秒
mp3 pcm データの先頭に適用する必要がある X 秒間の沈黙があり、次のようにしています。
private short[] mp3Buffer = null;
private short[] wavBuffer = null;
private short[] mixedBuffer = null;
double silenceSamples = (audioInfo.rate * padding) * 2;
for (int i = 0; i < minBufferSize; i++){
if (silenceSamples > 0 ){
mp3Buffer[i] = 0; //Add 0 to the buffer as silence
mixedBuffer[i] = (short)((mp3Buffer[i] + stereoWavBuffer[i])/2);
silenceSamples = silenceSamples - 0.5;
}
else
mixedBuffer[i] = (short)((mp3Buffer[i] + stereoWavBuffer[i])/2);
}
オーディオは常にオフです。1 秒か 2 秒速すぎることもあれば、1 秒か 2 秒遅すぎることもあります。最初にオーディオレコード(wav)を開始してから、タイマーの開始->メディアプレーヤーの開始(準備済み)->タイマーの終了を設定し、その差を「パディング」変数に設定するため、タイミングに問題があるとは思いません。また、wav ヘッダーから 44kb をスキップしています。
どんな助けでも大歓迎です。