【问题标题】:AVCaptureSession failing on first initializationAVCaptureSession 在第一次初始化时失败
【发布时间】:2013-11-25 21:25:17
【问题描述】:

我的应用中有一个视图,它初始化 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”,它并没有告诉我太多。在我寻找答案的过程中,我看到这个错误代码是针对其他问题而引发的,但对于我的具体问题却没有。我认为它与音频有关,因为一旦我改变它就变得一致了,但我不确定我能做些什么。

【问题讨论】:

    标签: objective-c cocoa-touch avfoundation


    【解决方案1】:

    您是否在观察AVCaptureSessionRuntimeErrorNotification 通知?我的AVCaptureSession 也有类似的问题。在某些设备上它无法正常工作,视频预览也无法正常工作。

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 2013-04-20
      • 2016-03-25
      • 2012-11-17
      相关资源
      最近更新 更多