用swift访问前置摄像头?

问题描述:

我已经做了一些搜索,并且大多数答案都在Obj-C中,或者不适用于此代码。用swift访问前置摄像头?

我用这个指南: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 
    } 

相机背面是默认的,但我没有看到如何直线上升访问前置摄像头为了让人们来回交换。

+1

你可能想看看这个问题 - http://*.com/questions/29155623/how-to-get-the-front-camera-in-swift – Roy

+0

你可以使用可以管理摄像头会话的简单类 - > https:// github .com/maryamfekri/MFCameraManager –

您目前无效frontCamera与您的backCamera之一具有相似的行为。您需要使用devicesWithMediaType(_ mediaType: String!),它允许将所有能够捕获AVMediaTypeVideo类型数据的设备存储在阵列中。

我不会建议调用该变量frontCamera因为你要存储了“设备”的阵列,但是这是代码实现

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

for element in frontCamera{ 
    let element = element as! AVCaptureDevice 
    if element.position == AVCaptureDevicePosition.Front {   
     captureDevice = element 
     break 
    } 
} 

func FromCamera() { 
    let imagepicker = UIImagePickerController() 
    imagepicker.delegate = self 
    imagepicker.allowsEditing = true 
    imagepicker.sourceType = UIImagePickerController.isSourceTypeAvailable(.Camera) ? .Camera : .PhotoLibrary 
    imagepicker.cameraDevice = UIImagePickerController.isCameraDeviceAvailable(.Front) ? .Front : .Rear 
    self.presentViewController(imagepicker, animated: true, completion: { _ in }) 
} 
+0

试试这个,它在Swift 2.0中为我工作 –