尝试在AVPlayer中输入背景时,“无法添加输出”崩溃

时间:2019-01-29 23:23:40

标签: ios swift

我已经编写了代码,因此当我进入后台并返回摄影机会话时,它不会搞砸,但事实并非如此。当您返回时,出现以下错误:

  

2019-01-29 18:04:57.702967-0500 Proj [2105:617183] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* --[AVCaptureSession addOutput:]无法添加输出以捕获会话

有问题的代码如下:

    func notificationCenter() {
    NotificationCenter.default.addObserver(self, selector: #selector(willResignActive), name: UIApplication.willResignActiveNotification , object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(openedAgain), name: UIApplication.didBecomeActiveNotification, object: nil)
}

@objc func openedAgain() {
    setupCamera() //This is your function that contains the setup for your camera.
}

@objc func willResignActive() {
    print("Entered background")
    let inputs = captureSession.inputs
    for oldInput:AVCaptureInput in inputs {
        captureSession.removeInput(oldInput)
    }
}

此处的方法在viewdidload

中被调用

注意:返回时,即使出现错误,摄像头会话似乎仍然可以正常工作,因为我可以看到凸轮看到的内容,但是除了移动凸轮之外,我无法执行其他任何操作。

1 个答案:

答案 0 :(得分:0)

根据Docs

  

addOutput:此方法在调用时会引发异常,并且canAddOutput(_ :)返回false。

因此,在添加任何输出之前,必须先检查canAddOutput与添加输入canAddInput

关于您的问题,请在辞职时使用captureSession.stopRunning(),在活动时需要使用captureSession.startRunning()

NotificationCenter.default.addObserver(self, selector: #selector(stopTheSession), name: UIApplication.applicationDidEnterBackground, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(startTheSession), name: UIApplication.applicationWillEnterForeground, object: nil)