【问题标题】:captureOutput() function is never called swift4captureOutput() 函数永远不会被调用 swift4
【发布时间】:2019-06-19 22:40:24
【问题描述】:

我正在尝试实时捕获相机帧以使用Firebase ML KIT 进行处理。我已成功显示相机视图,但似乎无法调用 captureOutput 委托函数。

P.s 我是 iOS 开发新手。

private func startLiveVideo() {

    self.session.sessionPreset = AVCaptureSession.Preset.photo
    let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)
    let deviceInput = try! AVCaptureDeviceInput(device: captureDevice!)

     self.session.addInput(deviceInput)

    let deviceOutput = AVCaptureVideoDataOutput()

    deviceOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String: Int(kCVPixelFormatType_32BGRA)]
    deviceOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))

    self.session.addOutput(AVCaptureVideoDataOutput())
    let imageLayer = AVCaptureVideoPreviewLayer(session: session)


    imageLayer.frame = CGRect(x: 0, y: 0, width: self.imageView.frame.size.width + 100, height: self.imageView.frame.size.height)
    imageLayer.videoGravity = .resizeAspectFill
    imageView.layer.addSublayer(imageLayer)

    self.session.startRunning()

}

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    print("Frame captured")
}

【问题讨论】:

    标签: ios swift swift4


    【解决方案1】:

    你为

    添加代理
    let deviceOutput = AVCaptureVideoDataOutput() 
    deviceOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String: Int(kCVPixelFormatType_32BGRA)]
    deviceOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
    

    但在这里添加另一个实例

    self.session.addOutput(AVCaptureVideoDataOutput())
    

    所以替换为

    self.session.addOutput(deviceOutput)
    

    【讨论】:

    • 我只是忘了在复制代码之前撤消它,它一直是 self.session.addOutput(deviceOutput) 这并没有改变任何东西。
    【解决方案2】:

    转换为 Swift 5 后它工作得很好。

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 2017-12-17
      • 2018-09-02
      • 2013-08-31
      • 1970-01-01
      相关资源
      最近更新 更多