iOS 15开发CaptureOutput从未调用,使用AVFoundation



下面是我的代码:

import AVFoundation
/// CMSampleBuffer
@objcMembers
final class CameraOutput: TOutput, AVCaptureVideoDataOutputSampleBufferDelegate {

private var videoDataOutput = AVCaptureVideoDataOutput()

private var captureSession: AVCaptureSession =  AVCaptureSession()

override func start() {
AVCaptureDevice.requestAccess(for: .video) {
granted in
if granted {
self.runCamera()
}
}
}

func runCamera() {
self.videoDataOutput.setSampleBufferDelegate(self, queue: DispatchQueue.main)
do {
captureSession.beginConfiguration()
let deviceInput = try AVCaptureDeviceInput(device: AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)!)
captureSession.addInput(deviceInput)
captureSession.addOutput(videoDataOutput)
captureSession.commitConfiguration()
DispatchQueue.global(qos: .userInitiated).async {
self.captureSession.startRunning()
NSLog("Camera on!")
}
NSLog("Camera on!")
} catch (_){}
}


public func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
//        let image: UIImage? = ImageConverter.convert(from: sampleBuffer)
NSLog("Capture get")
//        callAllListeners(image)
}
}

在我运行start后,它显示了一个权限警告并允许它。使用徽章的相机会变成绿色,但一秒钟后就熄灭了。CaptureOutput(…){…}从未调用.......

  • 我的类TOutput扩展为NSObject
  • "相机吧!">
  • XCode版本:version 14.0.1 (14A400)
  • 操作系统版本:12.6(21G115)
  • iOS版本:15.0.1
  • 机器类型:M1芯片

我在网上搜索了一下,但是没有解决。

哦,我在一个方法中创建了一个CameraOutput,所以在该方法之后,对象被GC删除了。

最新更新