Cocoa touch 在iPad上处理大型视频源

Cocoa touch 在iPad上处理大型视频源,cocoa-touch,ipad,video,Cocoa Touch,Ipad,Video,我需要拍摄视频流中输入的图像,所有这些都在内存有限的iPad上,在视频流仍在输入时快速保存到文件系统,然后在“录制”会话后处理它们。我需要快速保存输入的UIImage,以避免中断仍将在iPad上查看的提要。我正在考虑将每个帧保存到一个单独的文件中,然后按顺序读取这些文件并将它们合并到一个.mov文件中 诀窍是:如何快速保存UIImage(可能是原始数据),然后在处理电影时,将每个UIImage文件附加到其中以生成无缝的电影文件?在添加之前,我需要对每个帧进行一些处理,比如缩放和变换 如果您有任何

我需要拍摄视频流中输入的图像,所有这些都在内存有限的iPad上,在视频流仍在输入时快速保存到文件系统,然后在“录制”会话后处理它们。我需要快速保存输入的UIImage,以避免中断仍将在iPad上查看的提要。我正在考虑将每个帧保存到一个单独的文件中,然后按顺序读取这些文件并将它们合并到一个.mov文件中

诀窍是:如何快速保存UIImage(可能是原始数据),然后在处理电影时,将每个UIImage文件附加到其中以生成无缝的电影文件?在添加之前,我需要对每个帧进行一些处理,比如缩放和变换


如果您有任何建议,我们将不胜感激。

根据图像的大小,您可以让新的coredata“使用外部存储”属性为您执行此操作。 以下是从我的另一个答案复制的解释:

由于我们现在在IO5上,您不再需要将图像写入磁盘。 现在可以在coredata二进制属性上设置“允许外部存储”。根据苹果发布说明,其含义如下:

诸如图像缩略图之类的小数据值可以有效地存储在存储库中 数据库,但大型照片或其他媒体最好由 文件系统。现在可以指定托管 对象属性可以存储为外部记录-请参阅 setAllowsExternalBinaryDataStorage:启用时,核心数据 启发式地根据每个值决定是否应该保存数据 直接存储在数据库中,或将URI存储到一个单独的文件中 为您管理。不能基于二进制文件的内容进行查询 如果使用此选项,则返回data属性

使用这种方法有几个优点。 第一个coredate是在写入文件系统时至少以尽可能快的速度保存文件。但是,如果有任何适用于上述条件的小图像,则速度会快得多,因为它们将直接保存在coredata sqlite文件中

此外,使用iOS 5,在单独的托管上下文上工作和在后台的子上下文上执行更改非常容易。如果成功完成,您可以将此子上下文合并到主托管对象上下文中,并执行所需的处理

[child performBlock:^{
[childsave:&parentError]; //do this in background on child context
}];
有一个NSPrivateQueueConcurrentType用于创建“子moc”-请参阅[苹果文档][1]

而且,至少您可以使用coredata对象,这使您能够在下载完成后缓存、限制和优化进一步的处理

[1] :有关更多信息