Switch cameras with avcapturesession

后端 未结 6 1696
借酒劲吻你
借酒劲吻你 2020-11-28 08:06

Using this tutorial here: http://www.musicalgeometry.com/?p=1297 I have created a custom overlay and image capture with AVCaptureSession.

I am attemptin

6条回答
  •  甜味超标
    2020-11-28 08:20

    Swift 3

    func switchCamera() {
            session?.beginConfiguration()
            let currentInput = session?.inputs.first as? AVCaptureDeviceInput
            session?.removeInput(currentInput)
    
            let newCameraDevice = currentInput?.device.position == .back ? getCamera(with: .front) : getCamera(with: .back)
            let newVideoInput = try? AVCaptureDeviceInput(device: newCameraDevice)
            session?.addInput(newVideoInput)
            session?.commitConfiguration()
        }
    
    // MARK: - Private
    extension CameraService {
        func getCamera(with position: AVCaptureDevicePosition) -> AVCaptureDevice? {
            guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else {
                return nil
            }
    
            return devices.filter {
                $0.position == position
            }.first
        }
    }
    

    Swift 4

    You can check full implementation in this gist

提交回复
热议问题