短视频编辑SDK测试有一段时间了,因此抽时间对编辑SDK的相关内容进行简要复盘。
功能说明
短视频编辑SDK支持gif,不同格式的图片,视频文件的拼接导入,编辑,添加特效,合成导出等功能。更具体的介绍可以参照官网的SDK开发文档。https://live.360.cn/developer/doc?page_id=67&item_id=5
模块结构
编辑SDK的核心模块包括时间线、特效指令、预览播放器、合成器。整体架构图概括如下:
- 时间线:时间线上包含多个音/视频轨道。轨道是文件素材的载体,视频轨道上可以添加视频、音频文件,音频轨道上只能添加音频文件。片段上可以添加特效,片段间可以设置不同的转场效果。
- 特效指令:特效指令分为音、视频特效,譬如变声、滤镜、贴纸、画质调节等效果。
- 预览播放器:实时预览,源素材文件和添加的特效都可以通过预览播放器实时渲染。
- 合成器:读取素材文件,并按特效指令处理素材文件,最终按照合成配置合成新的媒体文件。
播放/合成模块处理
播放/合成模块文件处理过程可以通过下图概括。
实际上,播放和合成模块是分立的两个模块,并非涵盖关系。只不过两个模块读取文件配置信息和音视频解码部分流程相同。另外,在添加文件时,SDK会对文件进行格式转换,方便之后对于音、视频数据的处理。读取文件并解码后,还会涉及到视频像素数据的颜色空间转换。由此,也需要我们在测试过程中对相关知识进行学习了解,譬如常见的音视频文件格式,视频数据的颜色空间等。
测试注意点
在了解了编辑SDK的基本功能和处理过程后,我们接下来看看测试编辑SDK的过程中有哪些需要注意的方面呢。
- 输入素材文件的格式类型
在根据需求实际测试过程中,我总结出以下需要覆盖的素材文件类型(测试设备主要为iPhone设备)
由于源素材的格式类型众多,确实会在一定程度上增加测试的繁琐性。不过在发现问题并协助开发解决问题的过程中还是能够学习到很多东西。
- 预览播放时特效的叠加操作
当前编辑SDK支持转场,变速,添加背景音乐和字幕贴纸等功能。那么在实际测试过程中不可忽视的就是相关操作的叠加。假设我们导入一段时长20s的视频,从视频的起始位置到结束位置添加背景音乐后,对其进行2倍速变速操作。此时视频的播放时间为10s,那当前的视频导出后时长是否正确,源素材的音频轨和背景音乐是否依照预期叠加,源素材文件和背景音乐是否在对应的时间线上同步变速等,则是需要着重关注的地方。
- 预览播放和合成导出过程中的中断操作
预览播放时,播放器进行数据的渲染。在一些中断操作(锁屏,切后台,电话打入,闹钟等)后,我们也要关注播放器是否能够正常的刷新或重启,是否会出现黑屏,丢帧等异常现象。合成过程中进行数据的编码,同样要验证中断操作对编码器逻辑的影响。
问题举例
测试过程中的确也遇到了不少问题,其实也是由于我们上面说到的一些注意点没有考虑全面导致的,试举两例:
1.iPhone7 iOS11拍摄的视频导入demo崩溃
原因:iPhone7(及以上) iOS11(及以上)的设备拍摄的视频均采用H265编码格式。之前多数iPhone设备拍摄的视频为H264编码,此处需要特别注意。
2.iPhone X 截图导入demo后,画面出现拉伸类似于马赛克的情况。
原因:iPhone X截图分辨率比较特殊,为2436*1125。因此需要针对此类特殊分辨率的素材文件作特殊处理。
另外,在我们进行功能测试的同时,也要关注下SDK的性能指标。可以和竞品进行对比,输入同一段素材文件,保证输入和输出分辨率相同的情况下,获取不同阶段的CPU,内存消耗,以及不同平台下的合成时长。这对于产品的优化发展而言,也是大有裨益的。