美摄SDK For iOS  3.10.0
美摄Mimo技术文档

Mimo iOS使用文档

1、Mimo概述

  Mimo模板数据由info.json进行组织,使用时对info.json文件进行解析,然后按照获取的信息进行视频内容添加。

  具体添加内容:

  A、添加镜头(注:shot,分为普通镜头和空镜头。空镜头指json 中已经预定好指定素材的镜头,即用户无法对此镜头进行选素材操作)。

  B、添加时间线特效。

  C、添加clip 特效等。

  最后形成一个合乎预期效果的时间线,通过时间线转换成视频。

2、Mimo规范

  Mimo 具体规范,可参考设计同事给定的范例文档。

3、Demo参考代码

3.1、NvMimoListViewController-> Mimo 模块模版列表界面。

  完成内容如下:

  A、用户在此界面选定某个模版应用,并跳转至相册界面选择相应素材。

  B、在此界面完成具体模板json转model操作。

  C、在相册界面根据model信息(如,镜头数量)选择素材。

  D、完成对clipArr(不包含空镜头)中元素的初步处理,如指定该镜头对应的选定素材及其素材时长等相关信息。

3.2、NvMimoEditTailoringViewController->单镜头素材编辑

  对单个镜头素材trimIn\trimOut进行编辑。

3.3、NvPreviewViewController -> 模版效果预览界面

  在此界面创建timeline, 按照模版信息添加素材及特效。

4、创建时间线

4.1、转码视频

  转码视频:如果镜头对应选择素材为视频素材,而且该镜头包含reverse或repeat字段,需要对该视频素材进行转码操作。

  调用NvsMediaFileConvertor接口转码,接口如下:

- (int64_t)convertMeidaFile:(NSString *)srcFilePath
               outputFile:(NSString *)outputFilePath
         isReverseConvert:(bool)isReverse
             fromPosition:(int64_t)from
               toPosition:(int64_t)to
                  options:(NSMutableDictionary *)options;

4.2、镜头变速

  镜头变速的两种情况:

  A、针对镜头内speed 数组不为空,需进行变速操作。

  B、如果所选素材指定trimIn与 trimOut不够镜头时长限制,需进行变速操作。

  两种情形封装接口如下:

- (void)multiSpeedWithModel:(NvShotModel *)editDataModel videoTrack:(NvsVideoTrack *)videoTrack totalTime:(int64_t)totalTime modelIndex:(int)index

- (void)noneSpeedWithModel:(NvShotModel *)editDataModel videoTrack:(NvsVideoTrack *)videoTrack totalTime:(int64_t)totalTime modelIndex:(int)index

  注意:sdk 最小支持变速为 1/16.0。

4.3、时间线特效

  时间线特效:按照模板信息对非镜头内特效(滤镜、复合字幕、贴纸等)添加。

  注:使用特效之前,应首先确保该特效已经正确安装。

  安装素材调用NvsAssetPackageManager下的方法。

  接口如下:

- (NvsAssetPackageManagerError)installAssetPackage:(NSString *)assetPackageFilePath license:(NSString *)licenseFilePath type:(NvsAssetPackageType)type sync:(BOOL)synchronous assetPackageId:(NSMutableString *)assetPackageId;

4.4、镜头内特效

  镜头内特效:按照是否存在变速分为添加时间线特效和添加clip特效两种。  注:其中因变速导致的一个镜头分割为多个clip的情况,应将这些clip之间的转场设为空。

4.5、组合字幕字体

  组合字幕字体:组合字幕可应用指定字体效果。使用字体之前,首先对字体注册。

  字体注册示例代码:

NSString *fontFamily = [self.streamingContext registerFontByFilePath:[fontPath stringByAppendingPathComponent:path]];

4.6、片段水印

  片段水印:开启或关闭片段结尾水印。即添加和删除模板指定动态水印。

4.7、转场特效

  转场特效:视频转场需要在片段数据处理完后单独处理,否则无效!