我正在尝试使用 Audiounits 对音频文件进行 TimeStretching。
我正在使用此代码。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 保存在文件中是否正确?