iOS上的视频帧是否可以使用循环缓冲区?

时间:2015-12-14 06:08:14

标签: ios video

我目前正在寻找一种在iOS中创建“实时照片”功能但使用视频的方法。目标是在开始拍摄视频之前让应用程序存储几秒钟的帧。我认为循环缓冲区在这里很好用,但我见过的大多数库只用于音频。鉴于实时照片功能是iPhone 6S独有的,我想知道在具有相同RAM量的设备上是否可以实现这样的功能,例如iPad Air 2或具有较小RAM的设备,例如iPhone 6

2 个答案:

答案 0 :(得分:1)

理论上,可以存储和循环视频,但实际上你会发现它不太可能以30 FPS的快速FPS速率实际用于全屏视频。问题是用于视频的总内存量。每个像素是32位数据(RGBX),每个像素基本上是一个单词,你需要乘以W x H来计算给定相机分辨率的大小。总而言之,对于非常大的W和H,CPU和内存总线的数据太多,无法跟上读写。现在iOS设备确实有硬件可以帮助完成这项任务,例如你可以使用内置硬件对电影进行编码,但这可能是你在处理非常大的W x H值时能够使它工作的唯一方法和快速的帧速率。您还必须小心宽高比,因为相机可能会捕获h.264编码硬件不支持的宽高比图片。

答案 1 :(得分:1)

很久以前我正在开发适用于iOS的车载DVR / dashcam应用程序。有必要保存最近三十分钟的视频,显然不可能存储在RAM中。

通过将视频写入到所需长度的文件,然后写入第二个文件,然后再次切换到第一个文件(覆盖)等来解决任务问题。通过这样的过程,我能够切割&随时粘贴这两个文件中的最后30分钟。

我记得性能没有问题。

也许这种方法对你有用。