短视频按压拍摄自定义方案(GinCamera/GinVideoCaptureViewController)

297 阅读2分钟

DEMO地址 GinCamera

这里只做方案思路的讲解,具体实现,请参考DEMO

实现的功能有点类似于微信的短视频拍摄功能

1.按下拍摄按键,开始拍摄。 2.松开拍摄按键,保存内容。 3.每一段拍摄结束可以选择放弃,或者结束拍摄。 4.提供闪光灯功能,摄像头切换功能。

逻辑部分

可以看出,主要逻辑部分都集中于拍摄过程,下面细分一下上述拍摄过程中可能出现的各种情况

按下拍摄按键

视频开始拍摄,有两种情况

  1. 拍摄正常,可以继续拍摄,
  2. 拍摄时间超过视频要求的最大时长,这时候就需要对视频做出停止操作,并且保存拍摄超长前的所有内容。拍摄时间超过视频要求的最大时长,这时候就需要对视频做出停止操作,并且保存拍摄超长前的所有内容。
松开拍摄按钮

视频拍摄结束,也有两种情况

  1. 拍摄时间过短,放弃这段内容,返回准备拍摄状态
  2. 拍摄时间符合要求,记录片段视频时长,显示视频删除与完成拍摄的两个入口,供用户选择拍摄时间符合要求,记录片段视频时长,显示视频删除与完成拍摄的两个入口,供用户选择
用户选择删除当前片段

这个方案中,短视频是由多个片段视频合成的,有一个游标来控制片段之间的顺序,当用户删除片段,则需要将游标前移一位(游标前方无元素时,则不前移),并删除片段。

用户选择完成视频拍摄

将多个片段的短视频进行合成,这里用了AVMutableComposition,将片段之间的音轨和视频进行合成,生成一个完整短视频。用AVAssetImageGenerator,抽取视频第一帧,作为视频预览图。