AudioToolBox 프레임 워크에서 ExtAudioFileCreateWithURL 및 ExtAudioFileWrite를 사용하여 샘플을 파일에 저장했습니다. 하지만 지금은 내가 지금 NSDocument 사용하고 있습니다 년부터 NSFileWrapper에 저장해야합니다AudioToolBox를 사용하여 웨이브 파일을 NSFileWrapper에 저장합니다.
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
내가 NSFileWrapper initRegularFileWithContents:(NSData*)contents
방법을 사용할 수 있도록 NSMutableData 개체와 ExtAudioFileXXX 기능을 사용할 수있는 방법이 있습니까?
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);
}
감사합니다. 저스틴. 오디오 파일이 거의 변경되지 않았기 때문에 이미 NSFileWrappers 자식을 사용하여 쓰기 작업을 최소화했습니다. fileWrapperOfType이 이미 유효한 NSFileWrapper를 찾으면이 파일을 건너 뜁니다. 내 마지막 해결책은 ExtAudioFileCreateWithURL을 사용하여 사용자가 상호 작용하는 외부 파일에 저장하지만 내 NSFileWrapper에 오디오를 저장할 때 내 saveWAVFileToMemory 루틴을 롤업하는 것이 었습니다. 이렇게하면 내보내는 동안 파일 형식을 더 많이 선택할 수 있지만 NSFileWrappers를 사용하여 내부 저장에 사용할 수 있습니다. –
@DaveStephenson 실제 구현에 대한 설명은 높이 평가합니다. 천만에요. – justin