[英]I get an error when I try to initiate the front camera (Swift)
I get an error when I try to use the following code: 尝试使用以下代码时出现错误:
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()
}
}
The line: var input = AVCaptureDeviceInput(device: captureDevice, error: &error)
is giving me the error: Variable CaptureDevice used before being initialized . 这行: var input = AVCaptureDeviceInput(device: captureDevice, error: &error)
给我错误: 初始化之前使用了变量CaptureDevice 。 Can someone help me how to fix this? 有人可以帮我解决这个问题吗?
Thank you so much! 非常感谢!
This is because captureDevice
may be 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
}
}
If the loop doesn't find a front camera, captureDevice
will be used before being initialized. 如果循环找不到前置摄像头,则将在初始化之前使用captureDevice
。 To work around this, declare captureDevice
as an implicitly unwrapped optional, and initialize it to nil
: 要解决此问题,请将captureDevice
声明为一个隐式解包的可选,并将其初始化为nil
:
var captureDevice:AVCaptureDevice! = nil
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.