我试图在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
可见,但没有显示任何内容。
该应用程序要求获得首次使用相机的许可,并且已获得该许可。
设置断点并检查captureSession
,videoPreviewLayer
,videoCaptureDevice
和input
,确认它们已全部设置完毕。
答案 0 :(得分:5)
视频预览图层未添加到camView。因此,您无法在camView中看到相机会话正在运行。
添加以下行:
camView.layer.addSublayer(videoPreviewLayer)