Ios AudioFileWriteBytes的工作耗时太长

Ios AudioFileWriteBytes的工作耗时太长,ios,audio,core-audio,wav,Ios,Audio,Core Audio,Wav,这个问题对于这个空间来说可能有点太大太模糊了,但我会尝试一下 我有一个样本数组,我正试图在我的iOS上写入一个.wav文件,这需要一分钟半的时间。这是发生拖动的循环: for (int i=0; i< 1430529; i++) // 1430529 is the length of the array of samples { SInt16 sample; sample = sample_array[i]; audio

这个问题对于这个空间来说可能有点太大太模糊了,但我会尝试一下

我有一个样本数组,我正试图在我的iOS上写入一个.wav文件,这需要一分钟半的时间。这是发生拖动的循环:

for (int i=0; i< 1430529; i++)  // 1430529 is the length of the array of samples 
    {

        SInt16 sample;

        sample = sample_array[i];



        audioErr = AudioFileWriteBytes(audioFile, false, sampleCount*2, &bytesToWrite, &sample);

        sampleCount++;
    }

可能每次调用
AudioFileWriteBytes
时写入的字节数太少。
bytesToWrite有多大?

为什么需要循环?你不能一次性把所有的样品都写下来吗

    numSamples = 1430529;
    bytesToWrite = numSamples * 2;
    audioErr = AudioFileWriteBytes(audioFile, false, 0, &bytesToWrite, sample_array);

你真是个天才!但是现在播放速度要慢得多(可能是速度的一半?)。无论如何,我相信我能弄明白(除非你有任何想法:)。再次感谢!如果您不能按照@Paul R的建议进行操作,那么在编写音频文件时可能应该使用更大的字节缓冲区(我不使用iOS,但在Java、C#等中也遇到过类似的问题)。您的数据块太小,因此有太多的I/O调用。
    numSamples = 1430529;
    bytesToWrite = numSamples * 2;
    audioErr = AudioFileWriteBytes(audioFile, false, 0, &bytesToWrite, sample_array);