将sampleBuffer保存到CFArray中

时间:2012-05-24 11:19:34

标签: ios arrays avcapturesession

我一直在尝试创建一个来自AVCaptureOutput的60帧视频的循环缓冲区,然后我需要在事件发生后将帧写入AVAssetWriter。我认为它必须以类似的方式工作,以便在按下录制按钮之前此应用http://itunes.apple.com/us/app/precorder-video-camera-for/id412558814?mt=8如何记录设定的数量。

我用于循环缓冲区的先前方法是将sampleBuffer从输出添加到NSArray中,方法是将其转换为UIImage。这样工作正常,但据我所知,阵列填充未压缩的视频帧太快(给我内存警告,然后崩溃),如果视频质量设置得高,帧速率太慢,到期到UIImage对象的转换。因此,现在我一直在尝试将sampleBuffer添加到CFMutableArray中 - 因为这意味着我不必将其转换为UIImage,因此希望提高帧速率。但是,很少有人这样做的例子。我阅读了Save sampleBuffer in array (AVFoundation)并理解为执行以下操作:

初始化:

CFMutableArrayRef arrayOne = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );

要插入:

CFArrayInsertValueAtIndex(arrayOne, index, sampleBuffer);

转换回sampleBuffer:

CMSampleBufferRef newSampleBuffer = (CMSampleBufferRef)CFArrayGetValueAtIndex(arrayOne, cfarrIndex);

但是,当我使用'newSampleBuffer'时,它不允许我使用它,通常会停止代码或给出错误的访问错误。

所以我想我的问题是,有谁知道我想做的事情是否可能?或者,如果还有其他方法可以做到这一点?

提前致谢!

0 个答案:

没有答案