swift - 如何快速从实时视频中每5秒捕获一帧
问题描述
我是 swift 新手,想分析实时视频中的图像,但大多数答案都解释了如何捕获每一帧视频,代码如下,我想每 5(或 N)秒提取一次图像,如何修改代码。
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
DispatchQueue.main.async {[unowned self] in
guard let uiImage = self.imageFromSampleBuffer(sampleBuffer: sampleBuffer) else { return }
}
}
解决方案
也许你可以通过做这样的事情来自己跟踪经过的时间?
var lastSampleDate = Date.distantPast
let sampleInterval: TimeInterval = 5 // 5 seconds
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
let currentDate = Date()
guard currentDate.timeIntervalSince(lastSampleDate) >= sampleInterval else {
return
}
lastSampleDate = currentDate
DispatchQueue.main.async { [unowned self] in
guard let uiImage = self.imageFromSampleBuffer(sampleBuffer: sampleBuffer) else { return }
}
}