我一直在遵循Apple的文档,使用AVAudioSession
类在iPhone上录制音频。我可以无误地设置几个属性(setActive
,setCategory
,setPreferredHardwareSampleRate
),但是我无法让Apple的示例代码适用于setPreferredIOBufferDuration
。
这是我的代码:
- (void) initX {
NSError *setPreferenceError = nil;
NSTimeInterval preferredBufferDuration = 0.005;
[[AVAudioSession sharedInstance]
setPreferredIOBufferDuration: preferredBufferDuration
error: &setPreferenceError];
if (setPreferenceError != nil) {
NSLog( @"%@", setPreferenceError );
}
}
它产生以下输出:
我是从主应用程序代表调用此方法的,它是
applicationDidFinishLaunching
方法的一部分。我正在做的只是在此阶段初始化事情。在将AVFoundation.framework添加到项目后,我已经导入了AVFoundation / AVFoundation.h。 最佳答案
看来这是Apple程式码中的错误;使用纯C接口(interface):
OSStatus propertySetError = 0;
Float32 preferredBufferDuration = 0.005;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferDuration), &preferredBufferDuration);
然后检查是否有错误使用
if (propertySetError) NSLog(@"Failed to set shorter I/O buffer on AVAudioSession, code %d", propertySetError);