3
我想用Audiounits做音頻文件的TimeStretching。如何使用AudioUnit在ios中保存音頻文件?
我正在使用此代碼。 http://pastebin.com/DWMTw4n9
下面是我使用的示例項目:https://dl.dropbox.com/u/12216224/buglets/TimeSliderDemo-Buglet.zip
如何將音頻文件保存在IOS AudioUnits?
有什麼我想:
試圖保存音頻通過
OSStatus MyAURenderCallback(void *inRefCon,
AudioUnitRenderActionFlags *actionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
AudioUnit mixerUnit = (AudioUnit)inRefCon;
AudioUnitRender(mixerUnit,
actionFlags,
inTimeStamp,
0,
inNumberFrames,
ioData);
//Store the Audio units in a File
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *outputURL = paths[0];
NSFileManager *manager = [NSFileManager defaultManager];
[manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil];
outputURL = [outputURL stringByAppendingPathComponent:@"outputRamp.aif"];
ExtAudioFileWriteAsync((__bridge ExtAudioFileRef)(outputURL),
inNumberFrames,
ioData);
return noErr;
}
AURenderCallbackStruct callbackStruct = {0};
callbackStruct.inputProc = MyAURenderCallback;
// callbackStruct.inputProcRefCon = mixerUnit;
callbackStruct.inputProcRefCon = (__bridge void *)self;
AudioUnitSetProperty(self.effectUnit,
kAudioUnitProperty_SetRenderCallback,
kAudioUnitScope_Input,
0,
&callbackStruct,
sizeof(callbackStruct));
但回撥永遠不會被調用。將Audiounits保存在文件中是否正確?
@ sheraza感謝您的答覆。我已按照提供的步驟..但在ExtAudioFileWriteAsync編寫音頻文件,我得到錯誤響應(-50)。任何想法來解決這個問題? –
下面是我嘗試過的代碼:http://pastebin.com/k3wCthzV –