ios - AudioFileWriteBytes 完成其工作所需的时间太长

标签 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];



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

        sampleCount++;
    }

有什么想法吗?


编辑 1

如果有帮助,这是前面的代码:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];




// THIS IS MY BIT TO CONVERT THE LOCATION TO NSSTRING
NSString *filePath = [[NSString alloc]init];
filePath = [NSString stringWithUTF8String:location];

// HERE I WANT TO REMOVE THE FILE NAME FROM THE LOCATION.
NSString *truncatedFilePath = filePath;

truncatedFilePath = [truncatedFilePath stringByReplacingOccurrencesOfString:@"/recordedFile.wav"
                                    // withString:@"/newFile.caf"];
                                    withString:@"/recordedFile.wav"];




NSLog(truncatedFilePath);



NSURL *fileURL = [NSURL fileURLWithPath:truncatedFilePath];



AudioStreamBasicDescription asbd;


memset(&asbd,0, sizeof(asbd));

asbd.mSampleRate = SAMPLE_RATE;
asbd.mFormatID = kAudioFormatLinearPCM;


asbd.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;


asbd.mBitsPerChannel = 16;
asbd.mChannelsPerFrame = 1;
asbd.mFramesPerPacket = 1;
asbd.mBytesPerFrame = 2;
asbd.mBytesPerPacket = 2;






AudioFileID audioFile;

OSStatus audioErr = noErr;

audioErr = AudioFileCreateWithURL((CFURLRef)fileURL, kAudioFileWAVEType, &asbd, kAudioFileFlags_EraseFile, &audioFile);

assert (audioErr == noErr);


long sampleCount = 0;
UInt32 bytesToWrite = 2;

最佳答案

为什么需要循环?你不能一次性写出所有示例吗,例如

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

关于ios - AudioFileWriteBytes 完成其工作所需的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179418/

相关文章:

django - 在 Django 模板中播放 <audio></audio> 文件

macos - Xcode 4 的 AudioUnit 项目模板?

ios - 在所有 View 中使用数组变量

ios - *67 为 IOS 应用程序的电话号码

ios - 是否有开源 iOS 应用程序允许用户使用 Facebook 授权注册和登录?

python - 音频频谱分析仪(15 个条中 4410 个值)

JavaScript - 声音不随随机值一起播放

ios - 使用通用协议(protocol)过滤 subview 数组

iOS:如何将音频文件读入 float 缓冲区

macos - 如何从聚合 CoreAudio 设备中排除输入或输出 channel ?