ios - captureOutput() 函数从未被调用 swift4

标签 ios swift swift4

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

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")
}

最佳答案

您添加代表

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)

关于ios - captureOutput() 函数从未被调用 swift4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56650493/

相关文章:

ios - 使用 Objective-C 快速枚举时对 NSManagedContext 对象执行保存操作是否安全

ios - Xamarin.iOS 音频流不起作用,未触发事件

ios - Alamofire 与 swift 2.1.1 和 Xcode 7.2.1 不兼容

swift4 - 来自字符串的 Swift Keypath

swift - 使用它的通用 ObjectType 的 PHFetchResult 扩展?

ios - UISearchBar 和导航 Controller 中的两个按钮

ios - 没有UDID的ipa文件

ios - 如何从 plist 中检索字符串?

json - 如何使用 swift 4 和 struct 从字典中获取数据?

ios - Firebase 查询 - 我得到某种类型的 NSArray 作为结果(只是有时)