preferredBufferDuration

preferredBufferDuration

我一直在遵循Apple的文档,使用AVAudioSession类在iPhone上录制音频。我可以无误地设置几个属性(setActivesetCategorysetPreferredHardwareSampleRate),但是我无法让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);

07-28 08:33