AVCaptureSession在首次初始化时失败

时间:2013-11-25 21:25:17

标签: objective-c cocoa-touch avfoundation

我的应用程序中有一个视图初始化AVCaptureSession的实例,屏幕上有视频预览,并在按下按钮时开始录制。在iPad上它工作正常,但在iPhone上偶尔会无法加载捕获会话;没有视频预览,如果按下要录制的按钮,它会跳过录制并立即执行

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
  fromConnections:(NSArray *)connections
            error:(NSError *)error

方法。使用最新的iOS更新之一,音频捕获存在问题,我通过添加

来修复
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];

到音频会话设置。因为我已经这样做了,iPhone上的捕获会话加载问题已经变得一致。在应用程序启动时,第一次加载视图的尝试将始终失败,Xcode会向我提供此输出:

_serverConnectionDiedNotification. Info -- notification=Error
Domain=AVFoundationErrorDomain Code=-11819 "Cannot Complete Action" 
UserInfo=0x14679150 {NSLocalizedRecoverySuggestion=Try again later.,
NSLocalizedDescription=Cannot Complete Action},
AVPlayer = <MPQueuePlayer: 0x1458aa80>, currentTime = nan

如果我从该视图返回菜单,然后尝试再次加载视图,则每次后续加载的尝试都会成功;它只是第一次尝试加载失败的视图。我查找了错误代码,但这是一个相当非特定的“AVErrorMediaServicesWereReset”,这并没有告诉我太多。我已经看到这个错误代码在我搜索答案时引发了其他问题,但没有解决我的具体问题。我认为它与音频有关,因为一旦我改变它就变得一致,但我不知道我能做些什么。

1 个答案:

答案 0 :(得分:0)

您是否正在观察AVCaptureSessionRuntimeErrorNotification通知?我的AVCaptureSession遇到了类似的问题。在某些设备上它不起作用,视频预览也不起作用。

我通过侦听运行时错误通知修复了它,当它发生时,只需在短时间后再次添加AVCaptureVideoPreviewLayer,然后调用[AVCaptureSession startRunning]方法。

我认为潜在的问题(在Apple方面)是在应用启动时不会立即设置访问视频设备的权限。