下面是我的代码:
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删除了。