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

xe55xuns  于 2022-11-19  发布在  iOS
关注(0)|答案(1)|浏览(122)

下面是我的代码:

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

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

  • 我的类TOutput被扩展为NSObject
  • “摄像头打开!”记录了两次。
  • XCode版本:版本14.0.1(14 A400)
  • 操作系统版本:12.6(21 G115)
  • iOS版本:15.0.1
  • 机器类型:M1芯片

我在网上搜索了一下,但没有找到答案。

tjrkku2a

tjrkku2a1#

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

相关问题