我想开发一个程序,用户可以在按下停止按钮后捕获并保存最后30秒的视频。
1)我们是否可以控制视频录制?
2)我们怎样才能获得最后30秒的视频?
答案 0 :(得分:3)
如果我们能够设法使用UIImagePickerController以15 / fps的速率获取图像。
然后制作尺寸为15 * 30的缓冲区。
创建队列NSMutableArray在获取新帧时删除第一帧,并在队列末尾添加新帧。
当用户按停止按钮时结束。制作视频(使用自定义编码)。
我不确定,但它可以提供帮助。
答案 1 :(得分:0)
关于UIImagePickerController
UIImagePickerController类 管理系统提供的用户 选择和接受的界面 支持的图片和电影 设备。使用此类获取一个 来自用户的这些媒体类型。 该类管理用户交互 并报告这些结果 与相关联的交互 委托对象。
和
除了默认相机 界面,在iPhone OS 3.1及更高版本中 你可以管理相机的互动 如果需要,你自己。你可以提供 自定义叠加视图以显示 自定义拍照界面和 你可以开始接受 你代码中的图片。你的定制 叠加视图可以显示在 除了,或代替 图像提供的默认控件 选择器界面。
但我的问题仍然存在,我们如何管理视频的捕获持续时间?
答案 2 :(得分:0)
一种技术是将视频帧保存到环形缓冲区中。使ringbuffer足够大以存储30秒的视频。使用ringbuffer,你有一个填充指针,可以同时定义流的开始和结束。添加到缓冲区时,相应地增加指针。当用户按下“停止”时,您重写缓冲区,使填充指针处的数据位于缓冲区的开头(基本上您将旋转缓冲区中的所有数据,以便正确的点位于开头)。这是您的原始视频数据,代表最后30秒。您可能需要一个计数器来表示已经填充了多少秒,以防它们在少于30秒后按下停止。