我正在使用WebRTC及其使用AVCaptureSession。它可以正常工作几次,但有时会因此异常而崩溃。

最佳答案

我最近也有这个问题。在我的代码中,我保留了AVCaptureOutput的一个实例,并添加和删除了它。尝试将相同的AVCaptureOutput实例再次添加到相同的捕获 session 时,出现此错误。
这就是我解决的方法:

private var _captureOutput: AVCaptureOutput?
var captureOutput: AVCaptureOutput {
    guard let captureOutput = _captureOutput else {
        let photoOutput = AVCapturePhotoOutput()
        photoOutput.isHighResolutionCaptureEnabled = true
        _captureOutput = photoOutput
        return photoOutput
    }
    return captureOutput
}
必要时将实例初始化一次,然后将其删除,也将其无效。
captureSession.outputs.forEach { [weak self] output in
    self?.captureSession.removeOutput(output)
    self?._captureOutput = nil
}

09-07 14:14