在圆形或环形缓冲区中捕获GPUImageVideoCamera或AVCaptureSession帧以进行即时回放

时间:2013-12-10 02:15:14

标签: ios iphone objective-c cocoa-touch gpuimage

我正在使用GPUImage的GPUImageVideoCamera initWithSessionPreset:cameraPosition:以便在iOS设备上显示来自后置摄像头的视频(以iOS 7为目标)。这将被过滤并显示在GPUImageView上。不会超过AVCaptureSessionPreset640x480。

在应用程序的任何特定时刻,我都需要回忆过去5秒内从后置摄像头拍摄的未经过滤的视频,并立即在另一个(或相同的)GPUImageView上播放。

我可以通过GPUImageVideoCamera的willOutputSampleBuffer访问CMSampleBufferRef:这是通过但是我不确定如何以最有效的方式将最新的帧存入内存,以便可以即时,无缝地播放。

我认为解决方案是使用Circular Buffer之类的TPCircularBuffer,但我不确定它是否适用于视频流。还想引用未答复的Buffering CMSampleBufferRef into a CFArrayHold multiple Frames in Memory before sending them to AVAssetWriter,因为它们与我最初的攻击计划非常相似,直到我开始研究它。

0 个答案:

没有答案