ExtAudioFileWriteを使用して、MusicPlayer から OSX プロジェクトの WAV ファイルに書き込みます (サウンド サンプルにサウンドフォントを使用)。これは Rails アプリに埋め込まれており (Ruby 拡張を使用して Objective-C コードをラップしています)、これは私のコンピューターで正常に動作しています - WAV ファイルは正常に書き込まれています。
ただし、最近、アプリにオンラインでアクセスできるように、コードを Mac サーバーに配置しました。私が見つけたのは、サーバー上で実行すると、コードは正しい長さの WAV ファイルを生成しますが、約 15 秒のオーディオは完全に無音です。
ExtAudioFileWrite が正しい期間 (トラック全体) の間書き込みを続けているかのように見えますが、何らかの理由で、約 15 秒のオーディオの後、無音の書き込みが開始されます。
誰もこれを経験したことがありますか?
これは、書き込みを行っているコードです。
MusicTimeStamp currentTime;
AUOutputBL outputBuffer (clientFormat, numFrames);
AudioTimeStamp tStamp;
memset (&tStamp, 0, sizeof(AudioTimeStamp));
tStamp.mFlags = kAudioTimeStampSampleTimeValid;
int i = 0;
int numTimesFor10Secs = (int)(10. / (numFrames / srate));
do {
outputBuffer.Prepare();
AudioUnitRenderActionFlags actionFlags = 0;
FailIf ((result = AudioUnitRender (outputUnit, &actionFlags, &tStamp, 0, numFrames, outputBuffer.ABL())), fail, "AudioUnitRender");
tStamp.mSampleTime += numFrames;
ExtAudioFileWrite(outfile, numFrames, outputBuffer.ABL());
MusicPlayerGetTime(player, ¤tTime);
} while (currentTime < sequenceLength);