Как сделать снимок во время записи видео в ios swift 3 - PullRequest
0 голосов
/ 05 октября 2018

Я успешно записываю 5 секунд видео, используя следующий код.но мне нужно сделать снимок во время записи видео.Прежде всего я хочу знать, возможно ли сделать снимок во время записи. Если это возможно, как выполнить эту задачу в ios swift3.Моя актуальная задача заключается в том, что мне нужно захватывать и сохранять одно видео и одно изображение каждые 5 секунд, когда пользователь нажимает кнопку. Может ли кто-нибудь помочь мне выполнить эту задачу.

func VideoCaptureMethod() {
    //self.cameraView = self.view

    self.cameraManager.resumeCaptureSession()


    let devices = AVCaptureDevice.devices(for: AVMediaType.video)


    for device in devices {
        if (device as AnyObject).position == AVCaptureDevice.Position.back{


            do{

                let input = try AVCaptureDeviceInput(device: device )

                if captureSession.canAddInput(input){

                    captureSession.addInput(input)
                    sessionOutput.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]

                    if captureSession.canAddOutput(sessionOutput){

                        captureSession.addOutput(sessionOutput)

                        previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                        previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
                        previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
                        cameraView.layer.addSublayer(previewLayer)

                        previewLayer.position = CGPoint(x: self.cameraView.frame.width / 2, y: self.cameraView.frame.height / 2)
                        previewLayer.bounds = cameraView.frame


                    }

                    captureSession.addOutput(movieOutput)

                    captureSession.startRunning()

                    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
                    let fileUrl = paths[0].appendingPathComponent("output.mov")
                    try? FileManager.default.removeItem(at: fileUrl)
                    movieOutput.startRecording(to: fileUrl, recordingDelegate: self)



                    let delayTime = DispatchTime.now() + 5
                    DispatchQueue.main.asyncAfter(deadline: delayTime) {
                        print("stopping")
                        self.movieOutput.stopRecording()


                    }
                }

            }
            catch{

                print("Error")
            }

        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...