【问题标题】:Save video of last 30 second保存最后 30 秒的视频
【发布时间】:2010-01-17 09:15:44
【问题描述】:

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

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

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

【问题讨论】:

  • 任何答案对您有帮助吗?只需单击复选标记即可将其标记为已接受的解决方案或投票。请检查您的其他问题以获取可能的解决方案。谢谢! :)(是的,这是复制粘贴的,所以新用户知道投票系统。)
  • 这是这个问题的重复:stackoverflow.com/questions/2047257/…

标签: iphone video recording


【解决方案1】:

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

然后制作大小为 15*30 的缓冲区。

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

最后当用户按下停止按钮。创建视频(使用自定义编解码器)。

我不确定,但它会有所帮助。

【讨论】:

    【解决方案2】:

    关于 UIImagePickerController

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 2017-07-04
        • 1970-01-01
        相关资源
        最近更新 更多