保存最近30秒的视频

时间:2010-01-17 09:15:44

标签: iphone video recording

我想开发一个程序,用户可以在按下停止按钮后捕获并保存最后30秒的视频。

1)我们是否可以控制视频录制?

2)我们怎样才能获得最后30秒的视频?

3 个答案:

答案 0 :(得分:3)

如果我们能够设法使用UIImagePickerController以15 / fps的速率获取图像。

然后制作尺寸为15 * 30的缓冲区。

创建队列NSMutableArray在获取新帧时删除第一帧,并在队列末尾添加新帧。

当用户按停止按钮时结束。制作视频(使用自定义编码)。

我不确定,但它可以提供帮助。

答案 1 :(得分:0)

关于UIImagePickerController

  

UIImagePickerController类   管理系统提供的用户   选择和接受的界面   支持的图片和电影   设备。使用此类获取一个   来自用户的这些媒体类型。   该类管理用户交互   并报告这些结果   与相关联的交互   委托对象。

  

除了默认相机   界面,在iPhone OS 3.1及更高版本中   你可以管理相机的互动   如果需要,你自己。你可以提供   自定义叠加视图以显示   自定义拍照界面和   你可以开始接受   你代码中的图片。你的定制   叠加视图可以显示在   除了,或代替   图像提供的默认控件   选择器界面。

但我的问题仍然存在,我们如何管理视频的捕获持续时间?

答案 2 :(得分:0)

一种技术是将视频帧保存到环形缓冲区中。使ringbuffer足够大以存储30秒的视频。使用ringbuffer,你有一个填充指针,可以同时定义流的开始和结束。添加到缓冲区时,相应地增加指针。当用户按下“停止”时,您重写缓冲区,使填充指针处的数据位于缓冲区的开头(基本上您将旋转缓冲区中的所有数据,以便正确的点位于开头)。这是您的原始视频数据,代表最后30秒。您可能需要一个计数器来表示已经填充了多少秒,以防它们在少于30秒后按下停止。