Функция captureOutput () никогда не вызывается swift4 - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь захватывать кадры камеры в режиме реального времени для обработки с использованием Firebase ML KIT.Я успешно отобразил вид с камеры, но, похоже, не могу вызвать делегированную функцию captureOutput.

Ps Я новичок в разработке для 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")
}

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

После преобразования в Swift 5 все работало нормально.

0 голосов
/ 18 июня 2019

Вы добавляете делегата для

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...