Ios AudioFileWriteBytes的工作耗时太长
这个问题对于这个空间来说可能有点太大太模糊了,但我会尝试一下 我有一个样本数组,我正试图在我的iOS上写入一个.wav文件,这需要一分钟半的时间。这是发生拖动的循环: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
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);