[英]Type AVCaptureDevice does not conform to protocol Sequence
I am trying to open the front camera in order for talking a selfie and saving it as output still for the user to be able to see the pic before submitting. 我试图打开前置摄像头以便交谈自拍并将其另存为输出,以使用户能够在提交前查看图片。 The original function I configure was depreciated at iOS 10. Someone can help to understand how to write this correctly? 我配置的原始功能在iOS 10上已弃用。有人可以帮助您了解如何正确编写此功能?
//OLD CODE:
let devices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo)
for device in devices {
if device.position == AVCaptureDevicePosition.Front {
do {
let input = try AVCaptureDeviceInput(device: device as! AVCaptureDevice)
if captureSession.canAddInput(input) { ...
//NEW CODE:
let devices = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)
)
for device in devices {
if device.position == AVCaptureDevice.Position.front {
do {
let input = try AVCaptureDeviceInput(device: devices)
if captureSession.canAddInput(input) {
captureSession.addInput(input)
stillImageOutput.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]
if captureSession.canAddOutput(stillImageOutput) {
captureSession.add(stillImageOutput)
captureSession.startRunning()
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer)
previewLayer.bounds = cameraView.frame
previewLayer.position = CGPoint(x: cameraView.frame.width/2, y: cameraView.frame.height/2)
}
}
}
catch {
}
}
}
}
Look at the documentation 查看文档
class func `default`(_ deviceType: AVCaptureDevice.DeviceType,
for mediaType: AVMediaType?,
position: AVCaptureDevice.Position) -> AVCaptureDevice?
So the default
method returns an optional AVCaptureDevice
. 因此, default
方法返回一个可选的AVCaptureDevice
。
You just have to replace 您只需要更换
//NEW CODE:
let devices = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)
)
for device in devices {
if device.position == AVCaptureDevice.Position.front {
with 与
//NEW CODE:
if let device = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.