1
AVFoundation 프레임 워크를 사용하여 사진을 찍어 앱에서 분석하려고합니다. 매초마다 자동으로 사진을 찍고 싶습니다. 어떻게해야합니까?AVFoundation 매초마다 사진 찍기 SWIFT
여기 현재 코드입니다. 지금은 capturePhoto()를 호출 할 때만 사진을 찍습니다.
func setupSession() {
session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetPhoto
let camera = AVCaptureDevice
.defaultDeviceWithMediaType(AVMediaTypeVideo)
do { input = try AVCaptureDeviceInput(device: camera) } catch { return }
output = AVCaptureStillImageOutput()
output.outputSettings = [ AVVideoCodecKey: AVVideoCodecJPEG ]
guard session.canAddInput(input)
&& session.canAddOutput(output) else { return }
session.addInput(input)
session.addOutput(output)
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer!.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer!.connection?.videoOrientation = .Portrait
view.layer.addSublayer(previewLayer!)
session.startRunning()
}
func capturePhoto() {
guard let connection = output.connectionWithMediaType(AVMediaTypeVideo) else { return }
connection.videoOrientation = .Portrait
output.captureStillImageAsynchronouslyFromConnection(connection) { (sampleBuffer, error) in
guard sampleBuffer != nil && error == nil else { return }
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
guard let image = UIImage(data: imageData) else { return }
//do stuff with image
}
}
어떻게 변경해야합니까?
타이머를 멤버 변수로 만들고 viewDidAppear에서 timerCalled를 호출해야합니까? – mawnch
예, 타이머 변수를 멤버 변수로 만들고 viewDidAppear에 타이머를 만듭니다. 그런 다음'viewWillDisappear'에서'timer.invalidate()'를 호출 할 것입니다. –