Ios 使用AVFoundation将相机添加到viewController
我正在尝试将captureSession/摄影机添加到视图中。然而,无论我做什么,它都不会在我的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
摄像视图中显示任何内容。它只显示了一个空白的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)
}
}
}
将代码表单“视图确实加载”移动到“视图确实出现”为什么会有帮助?因为您在“视图确实加载”时启动摄影机会话,此时视图未完全加载到视图层次结构中!!!!您是否尝试将其移动到视图中?