gpt4 book ai didi

ios - 当我尝试启动前置摄像头时出现错误 (Swift)

转载 作者:行者123 更新时间:2023-11-29 02:12:00 24 4
gpt4 key购买 nike

当我尝试使用以下代码时出现错误:

   captureSession = AVCaptureSession()
captureSession!.sessionPreset = AVCaptureSessionPresetPhoto

//var backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

let videoDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo)
var captureDevice:AVCaptureDevice

for device in videoDevices{
let device = device as AVCaptureDevice
if device.position == AVCaptureDevicePosition.Front {
captureDevice = device
break
}
}


var error: NSError?
var input = AVCaptureDeviceInput(device: captureDevice, error: &error)

if error == nil && captureSession!.canAddInput(input) {
captureSession!.addInput(input)

stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput!.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if captureSession!.canAddOutput(stillImageOutput) {
captureSession!.addOutput(stillImageOutput)

previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer!.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.Portrait
previewView.layer.addSublayer(previewLayer)

captureSession!.startRunning()
}
}

行:var input = AVCaptureDeviceInput(device: captureDevice, error: &error) 给我错误:Variable CaptureDevice used before being initialized。有人可以帮我解决这个问题吗?

非常感谢!

最佳答案

这是因为 captureDevice 可能在初始化之前被使用:

var captureDevice:AVCaptureDevice

for device in videoDevices{
let device = device as AVCaptureDevice
if device.position == AVCaptureDevicePosition.Front {
captureDevice = device
break
}
}

如果循环没有找到前置摄像头,captureDevice 将在初始化之前使用。要解决此问题,请将 captureDevice 声明为隐式解包可选,并将其初始化为 nil:

var captureDevice:AVCaptureDevice! = nil

关于ios - 当我尝试启动前置摄像头时出现错误 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29187438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com