我使用 AudioToolBox 框架中的 ExtAudioFileCreateWithURL 和 ExtAudioFileWrite 将我的样本保存到文件中。但现在我需要将它保存到 NSFileWrapper,因为我现在使用的是 NSDocument:
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
有什么方法可以将 ExtAudioFileXXX 函数与 NSMutableData 对象一起使用,以便我可以使用 NSFileWrapperinitRegularFileWithContents:(NSData*)contents
方法?
剥离代码以保存到文件(有效):
AudioStreamBasicDescription file_desc;
FillOutASBDForLPCM(file_desc, _sample_rate, _channel_count, 32, 32, true, false);
OSStatus rv = ExtAudioFileCreateWithURL(url, kAudioFileWAVEType, &file_desc, NULL, kAudioFileFlags_EraseFile, &fout);
if (rv == noErr){
int buff_size = sizeof(AudioBufferList) + sizeof(AudioBuffer);
AudioBufferList* bufferList = (AudioBufferList*)malloc(buff_size);
bufferList->mNumberBuffers = 1;
bufferList->mBuffers[0].mData = _samples;
bufferList->mBuffers[0].mNumberChannels = _channel_count;
bufferList->mBuffers[0].mDataByteSize = _channel_count * _frame_count * sizeof(float);
ExtAudioFileWrite(fout, _frame_count, bufferList);
free(bufferList);
ExtAudioFileDispose(fout);
}