使用AVFoundation在UIView中显示相机进纸

时间:2016-03-08 14:15:23

标签: ios swift2 avfoundation

我试图在UIView中显示相机的输入。后来我需要能够分析视频帧,所以我需要使用AVFoundation这样做,据我所知。

到目前为止我所拥有的:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    @IBOutlet weak var camView: UIView!

    var captureSession:AVCaptureSession?
    var videoPreviewLayer:AVCaptureVideoPreviewLayer?
    var videoCaptureDevice: AVCaptureDevice?
    var input: AnyObject?

    override func viewDidLoad() {
        super.viewDidLoad()

        videoCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
        do {
            input = try AVCaptureDeviceInput(device: videoCaptureDevice)
        } catch {
            print("video device error")
        }
        captureSession = AVCaptureSession()
        captureSession?.addInput(input as! AVCaptureInput)
        videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
        videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
        videoPreviewLayer?.frame = camView.layer.bounds
        captureSession?.startRunning()
    }
}

camView可见,但没有显示任何内容。

该应用程序要求获得首次使用相机的许可,并且已获得该许可。

设置断点并检查captureSessionvideoPreviewLayervideoCaptureDeviceinput,确认它们已全部设置完毕。

1 个答案:

答案 0 :(得分:5)

视频预览图层未添加到camView。因此,您无法在camView中看到相机会话正在运行。

添加以下行:

    camView.layer.addSublayer(videoPreviewLayer)