使用AVCaptureVideoDataOutput保留最后一分钟的视频

时间:2016-12-22 07:36:17

标签: swift avfoundation

我用swift 3和AVCaptureSession以这种方式抓取帧。

我想要做的是将帧存储在内存中。简单 ?我只需将像素缓冲区存储在内存中,或将其写入文档文件......

但是我想存储大约一分钟的帧然后删除旧帧以替换新帧。当用户按下按钮时,我想在帧的最后一分钟保留在内存中。我曾试图写一个双链表,但我不认为这对性能有好处。使用AVFoundation工具有最好的方法吗?

由于

        let videoOutput = AVCaptureVideoDataOutput()
        videoOutput.videoSettings =  [kCVPixelBufferPixelFormatTypeKey as NSString:kCVPixelFormatType_32BGRA]
        videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "my queue"))
        if session.canAddOutput(videoOutput)
        {
            session.addOutput(videoOutput)
        }

       // AVCaptureVideoDataOutputSampleBufferDelegate
      func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!)
     {
         NSLog("frame")
         let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
     }

0 个答案:

没有答案