ExtAudioFileWrite只写一个文件的第一位

时间:2013-08-02 16:24:11

标签: objective-c ruby-on-rails audio

我正在使用ExtAudioFileWrite从MusicPlayer写入OSX项目中的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);

1 个答案:

答案 0 :(得分:0)

我通过确保服务器运行与我的计算机运行的操作系统和Xcode版本完全相同来解决了这个问题。这解决了这个问题。