简体   繁体   English

无法在Swift中使用前置摄像头

[英]Can't use front camera in Swift

I want to build front camera, but couldn't build front camera in Swift even I could build back camera. 我想构建前置摄像头,但是即使我可以构建后置摄像头,也无法在Swift中构建前置摄像头。

When I only change "back" to "front", camera didn't work... 当我仅将“后”更改为“前”时,相机无法正常工作...

How can I use front camera? 如何使用前置摄像头?

var captureSesssion: AVCaptureSession!
var stillImageOutput: AVCapturePhotoOutput?
var previewLayer: AVCaptureVideoPreviewLayer?
var captureDevice : AVCaptureDevice!

override func viewDidLoad() {
    super.viewDidLoad()

    captureSesssion = AVCaptureSession()
    stillImageOutput = AVCapturePhotoOutput()

    captureSesssion.sessionPreset = AVCaptureSessionPreset1920x1080 

    captureDevice = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .front) 
    //When change "front" to "back", camera is built.

    do {
       let input = try AVCaptureDeviceInput(device: captureDevice)

       if (captureSesssion.canAddInput(input)) {
           captureSesssion.addInput(input)

           if (captureSesssion.canAddOutput(stillImageOutput)) {
               captureSesssion.addOutput(stillImageOutput)
               captureSesssion.startRunning() 

               previewLayer = AVCaptureVideoPreviewLayer(session: captureSesssion)
               previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
               previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait 

               self.view.layer.addSublayer(previewLayer!)

               previewLayer?.position = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)
               previewLayer?.bounds = self.view.frame
           }
       }
    }
    catch {
        print(error)
    }

The front camera for iPhone 7 and iPhone 7 Plus can record 1080p but on older models it can only record 720p. iPhone 7和iPhone 7 Plus的前置摄像头可以录制1080p,但在较旧的机型上,它只能录制720p。 Thus, you just need to change the session preset, ie: 因此,您只需要更改会话预设,即:

captureSesssion.sessionPreset = AVCaptureSessionPreset1280x720

Swift 4: 斯威夫特4:

captureSesssion.sessionPreset = AVCaptureSession.Preset.hd1280x720

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM