Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Swift 视野中的AVF相机_Swift_Avfoundation - Fatal编程技术网

Swift 视野中的AVF相机

Swift 视野中的AVF相机,swift,avfoundation,Swift,Avfoundation,我有很多问题,试图获得一个视图,以显示我的后摄像头饲料。我看了所有的苹果文档,得出了这个结论,但它似乎只做了一个黑屏。我还在plist中添加了烫发,现在正在一台真正的设备上运行。我不需要它来拍照或保存任何东西。只需在视图中实时显示相机即可 import UIKit import AVFoundation class ViewController: UIViewController { @IBOutlet weak var cameraView: UIView!

我有很多问题,试图获得一个视图,以显示我的后摄像头饲料。我看了所有的苹果文档,得出了这个结论,但它似乎只做了一个黑屏。我还在plist中添加了烫发,现在正在一台真正的设备上运行。我不需要它来拍照或保存任何东西。只需在视图中实时显示相机即可

import UIKit
import AVFoundation

class ViewController: UIViewController {

    
    @IBOutlet weak var cameraView: UIView!
    
    
    var captureSession = AVCaptureSession()
    var previewLayer = AVCaptureVideoPreviewLayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        loadCamera()
    }

    func loadCamera() {
        
        let device = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .back)
        
        do {
            let input = try AVCaptureDeviceInput(device: device!)
            
            if captureSession.canAddInput(input) {
                captureSession.addInput(input)
                
                previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
                previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
                cameraView.layer.addSublayer(previewLayer)
                
            }
            
        } catch {
            print(error)
        }
    }  
}
欢迎光临

问题是,在当前设置中,实际上没有数据流(视频帧)。您需要至少将一个输入和一个输出附加到捕获会话。预览层本身不算作输出,因为它只会附加到输入和输出之间的现有连接

因此,要修复它,只需将
AVCapturePhotoOutput
添加到会话中(可能在添加层之前),但永远不要使用它。预览层应该开始显示帧


在添加输入和输出之前,您可能还希望将会话的
会话预设设置为
.photo
。这将导致会话生成具有理想尺寸的视频帧,以便在设备屏幕上显示。

感谢您的精彩回复。我对swift的了解非常有限,所以我很难让它继续工作。我想我只是不明白该怎么做。