Objective c ExtAudioFileWrite仅写入文件的第一位

Objective c ExtAudioFileWrite仅写入文件的第一位,objective-c,ruby-on-rails,audio,Objective C,Ruby On Rails,Audio,我在OSX项目中使用从MusicLayer写入WAV文件(声音样本使用Soundfont)。它嵌入到Rails应用程序中(使用Ruby扩展来包装Objective-C代码),在我的计算机上运行良好——WAV文件编写成功 不过,我最近把代码放到了Mac服务器上,这样我就可以在线访问应用程序了。我发现,当在服务器上运行时,代码会生成一个持续时间正确的WAV文件,但其中大约15秒的音频是完全无声的 这就好像ExtAudioFileWrite在正确的持续时间(整个曲目)内继续写入,但由于某种原因,在大约

我在OSX项目中使用从MusicLayer写入WAV文件(声音样本使用Soundfont)。它嵌入到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, &currentTime);
} while (currentTime < sequenceLength);
MusicTimeStamp当前时间;
AUOutputBL outputBuffer(clientFormat,numFrames);
音频时间戳;
memset(&tStamp,0,sizeof(AudioTimeStamp));
tStamp.mFlags=kAudioTimeStampSampleTimeValid;
int i=0;
int numTimesFor10Secs=(int)(10./(numFrames/srate));
做{
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());
MusicLayerGetTime(播放器和当前时间);
}while(currentTime
我通过确保服务器运行的OS和Xcode版本与我的计算机运行的完全相同,从而解决了这个问题。这解决了问题