Доступ к передней камере с помощью Swift?

Я провел поиск, и большинство ответов либо на Obj-C, либо не применимы к этому коду.

Я использую это руководство: http://drivecurrent.com/devops/using-swift-and-avfoundation-to-create-a-custom-camera-view-for-an-ios-app/

и у меня есть этот код:

     super.viewWillAppear(animated)

    captureSession = AVCaptureSession()
    captureSession!.sessionPreset = AVCaptureSessionPresetPhoto

    let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
    let frontCamera = ????

    var error: NSError?
    var input: AVCaptureDeviceInput!
    do {
        input = try AVCaptureDeviceInput(device: backCamera)
    } catch let error1 as NSError {
        error = error1
        input = nil
    }

Задняя камера по умолчанию, но я не вижу, как получить прямой доступ к передней камере, чтобы люди могли переключаться между ними.


person Barkley    schedule 17.06.2016    source источник
comment
Возможно, вы захотите проверить этот вопрос - stackoverflow.com/questions/29155623/   -  person Roy    schedule 17.06.2016
comment
вы можете использовать простой класс, который может управлять сеансом камеры - ›github.com/maryamfekri/MFCameraManager   -  person Maryam Fekri    schedule 07.02.2017


Ответы (1)


Ваша текущая недействительная камера frontCamera ведет себя примерно так же, как ваша backCamera. Вам нужно использовать devicesWithMediaType(_ mediaType: String!), который позволяет хранить в массиве все устройства, способные захватывать данные типа AVMediaTypeVideo.

let captureDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo)
var frontCamera: AVCaptureDevice

for device in captureDevices {
    let device = element as! AVCaptureDevice
    if device.position == AVCaptureDevicePosition.Front {           
        frontCamera = device
        break
    }
}
person Lorenzo Zanotto    schedule 17.06.2016