Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用AVFoundation将相机添加到viewController_Ios_Swift_Avcapturesession - Fatal编程技术网

Ios 使用AVFoundation将相机添加到viewController

Ios 使用AVFoundation将相机添加到viewController,ios,swift,avcapturesession,Ios,Swift,Avcapturesession,我正在尝试将captureSession/摄影机添加到视图中。然而,无论我做什么,它都不会在我的摄像视图中显示任何内容。它只显示了一个空白的ui视图(cameraView),我做错了什么 变量 var captureSession = AVCaptureSession() var backCamera: AVCaptureDevice? var frontCamera: AVCaptureDevice? var captureDevice: AVCaptureDevice? let stillI

我正在尝试将captureSession/摄影机添加到视图中。然而,无论我做什么,它都不会在我的
摄像视图中显示任何内容。它只显示了一个空白的
ui视图
cameraView
),我做错了什么

变量

var captureSession = AVCaptureSession()
var backCamera: AVCaptureDevice?
var frontCamera: AVCaptureDevice?
var captureDevice: AVCaptureDevice?
let stillImageOutput = AVCaptureStillImageOutput()
var previewLayer : AVCaptureVideoPreviewLayer?
let videoOutput = AVCaptureMovieFileOutput()
let devices = AVCaptureDevice.devices()
var cameraView: UIView!
viewDidLoad

setupCamera()

if backCamera != nil {
    beginSession(backCamera!)
}


cameraView = UIView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
cameraView.backgroundColor = UIColor.redColor()
self.view.addSubview(cameraView)


**setupCamera**

func setupCamera() {
    captureSession.sessionPreset = AVCaptureSessionPresetHigh

    // Loop through all the capture devices on this phone
    for device in devices {
        // Make sure this particular device supports video
        if device.hasMediaType(AVMediaTypeVideo) {
            // Finally check the position and confirm we've got the back camera
            if device.position == AVCaptureDevicePosition.Back {
                backCamera = device as? AVCaptureDevice
            }
            if device.position == AVCaptureDevicePosition.Front {
                frontCamera = device as? AVCaptureDevice
            }
        }
        if device.hasMediaType(AVMediaTypeAudio) {
            print(device)
        }
    }
}
开始会话

func beginSession(device: AVCaptureDevice) {

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

        if (captureSession.canAddInput(input)){

            captureSession.addInput(input)

            previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
            self.cameraView.layer.addSublayer(previewLayer!)

            previewLayer?.frame = self.view.layer.frame
            previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
            previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
            captureSession.startRunning()

            stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
            if captureSession.canAddOutput(stillImageOutput) {
                captureSession.addOutput(stillImageOutput)
            }
            if captureSession.canAddOutput(videoOutput) {
                captureSession.addOutput(videoOutput)
            }

            captureSession.addOutput(stillImageOutput)





        }

    }

}

将代码表单“视图确实加载”移动到“视图确实出现”为什么会有帮助?因为您在“视图确实加载”时启动摄影机会话,此时视图未完全加载到视图层次结构中!!!!您是否尝试将其移动到视图中?