【发布时间】:2019-11-28 00:05:51
【问题描述】:
按照 repo 和教程:https://github.com/brianadvent/CustomCamera
我收到以下代码错误: 错误:
Initializer for conditional binding must have Optional type, not 'AVCaptureVideoPreviewLayer'
if let availableDevices = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back).devices {
captureDevice = availableDevices.first
beginSession()
}
类似的,下面的片段
if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) {
self.previewLayer = previewLayer
self.view.layer.addSublayer(self.previewLayer)
self.previewLayer.frame = self.view.layer.frame
captureSession.startRunning()
let dataOutput = AVCaptureVideoDataOutput()
dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString):NSNumber(value:kCVPixelFormatType_32BGRA)] as [String : Any]
dataOutput.alwaysDiscardsLateVideoFrames = true
if captureSession.canAddOutput(dataOutput) {
captureSession.addOutput(dataOutput)
}
captureSession.commitConfiguration()
let queue = DispatchQueue(label: "com.brianadvent.captureQueue")
dataOutput.setSampleBufferDelegate(self, queue: queue)
}
与第二个代码 sn-p 相关的错误: 条件绑定的初始化程序必须具有 Optional 类型,而不是 'AVCaptureVideoPreviewLayer'
【问题讨论】:
-
您正试图解开一些不是可选的东西。就是不要解包,直接赋值给变量