下面是我的代码:
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芯片
我在网上搜索了一下,但没有找到答案。
1条答案
按热度按时间tjrkku2a1#
哦,我在一个方法中创建了一个
CameraOutput
,所以在这个方法之后,GC删除了这个对象。