swift - 为什么我的 AVCaptureVideoPreviewLayer 不会出现?

标签 swift xcode macos

我正在尝试制作一个 Swift OsX 应用程序,它可以打开相机并显示正在录制的内容。

现在它实际上只是一个 ViewController,绿灯亮起让我觉得录音开始了,但屏幕保持灰色,什么也没有出现。

这是 ViewController 的代码:

class ViewController: NSViewController, AVCaptureVideoDataOutputSampleBufferDelegate {

    let session = AVCaptureSession()
    let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

    @IBOutlet weak var imgView: NSImageView!

    func setUpSession() {
        self.session.sessionPreset = AVCaptureSessionPresetLow

        // Add the default input camera
        do {
            let input = try AVCaptureDeviceInput(device: device)
            self.session.addInput(input)
            print("Input added.")
        } catch let error as NSError {
            print(error)
        }

        var previewLayer = AVCaptureVideoPreviewLayer(session: session)
        previewLayer.frame = self.view.bounds
        previewLayer.position = CGPointMake(0, 0)
        previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

        self.view.layer = previewLayer
        self.session.startRunning()
        print("Session running.")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setUpSession()
    }

    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }
}

最佳答案

试试 view.layer.addSublayer(previewLayer)

关于swift - 为什么我的 AVCaptureVideoPreviewLayer 不会出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38612405/

相关文章:

iphone - UITextField float

ios - 在 macOS 编程中是否有 UIGraphicsGetImageFromCurrentImageContext() 的替代方法?

java 应用卡住 mac os 10.9

java - 如何在 Mac OS X 10.9 上加速 IntelliJ

swift - 带有 resultSelector 的 RxSwift withLatestFrom 无法编译

ios - AVAudioPlayer 多次播放相同的声音而不会中断

ios - Xcode的Storyboard突然消失

ios - 本地通知标识符

ios - 'NSInternalInconsistencyException',原因 : 'Requested the number of rows for section (0) which is out of bounds.'

ios - 隐藏状态栏但封面仍然拦截触摸