Skip to content
zanxiaofei edited this page Oct 30, 2017 · 3 revisions

MV

短视频1.5.3版本以后提供录制时添加MV功能
效果参考:

1. MV制作

在使用MV功能之前需要先制作集成MV资源的zip包,具体MV制作流程参考金山云短视频MV资源

2. MV使用

集成MV功能需要执行以下几步:

  1. 从assets或者网络上拷贝MV资源zip包到SD卡
  2. 解压zip包
  3. 构建MV数据类KSYMVInfo
  4. 调用接口applyMV(KSYMVInfo),使MV生效

2.1 拷贝解压MV资源

App需要将MV资源包拷贝到sd卡中,然后对资源包进行解压
Demo中将MV在assets中集成,解压过程参考Demo中FileUtils.reloadMVResourceFromAssets

Demo中以zip的包名(除.zip外)作为MV的名称及解压后的路径名,因此zip包名必须和解压后的文件同名
Demo中MV选择列表Item使用了zip包名和zip包中的icon.png,此部分参考Demo中RecordActivity中addMVData
Demo中,如果解压后的资源文件存在,会check下载的资源包是否和sd卡中的资源包md5相同,若不同会重新解压,此部分参考Demo中RecordActivity中initMVSelectView

2.2 构建MV数据类KSYMVInfo

SDK提供以下几个数据类用于构建MV资源:

  • KSYMVInfo mv最外层数据类,匹配config.json中的第一层数据
  • KSYMVAVInfo mv音视频数据类,匹配config.json中的movie/music字段具体信息
  • KSYMVFilterInfo mv滤镜数据类,匹配config.json中的filters中每一个滤镜的具体信息
  • KSYMVFrameInfo mv的效果帧数据类,即事件,匹配config.json中的animations中的frames具体信息

SDK提供了两种种构建MV的方式:

  1. 传入MV资源文件路径进行构建(需要zip解压后的文件路径)
    传入配置文件,SDK负责解析config.json文件并构造相关数据类
 /**
     * 通过mv的资源文件路径构建KSYMVInfo
     * @param path mv资源文件路径
     */
    public KSYMVInfo(String path)
  1. 传入MV具体配置信息来构建
    在App层创建MV需要的各个数据类
    其中config.json文件的解析,可以通过接口configMVFrom(String path)来完成
    /**
     * 传递构造好的MV信息来构造KSYMVInfo
     * @param ver mv版本信息(1.0)
     * @param loop  是否循环
     * @param plat  平台(Android/IOS)
     * @param movieInfo   mv主视频文件信息
     * @param musicInfo  mv主音频文件信息
     * @param filters   mv涉及的所有滤镜信息
     * @param frames   mv配置的所有事件
     */
    public KSYMVInfo(String ver, boolean loop, String plat, KSYMVAVInfo movieInfo,
                     KSYMVAVInfo musicInfo, ArrayList<KSYMVFilterInfo> filters,
                     ArrayList<KSYMVFrameInfo> frames) 

   /**
     * 通过mv的资源文件路径构建KSYMVInfo
     * @param path mv资源文件路径
     */
    public void configMVFrom(String path) 

   /**
     * 读取mv的config.json文件创建json字符串
     * @param configPath  config.json文件路径
     * @return json字符串
     */
    public String getMVConfigString(String configPath)

2.3 使MV生效

传入有效的 KSYMVInfo信息,即可启动对应的mv特效
接口传入null即可使mv无效,即关闭mv特效

/**
     * start mv
     * @param mvInfo mv info, null:cancel mv
     */
    public void applyMV(KSYMVInfo mvInfo)
Clone this wiki locally