元湃短视频APP开发定制|短视频SDK 6大功能技术实现方式详解
如果您想快速切入短视频行业,那么第三方短视频解决方案的方式才是明智之举。因为,选择一款功能齐全、性能优异的短视频解决方案尤为的重要。
今天,元湃数据来跟大家聊聊短视频SDK 6大重要功能点以及其技术实现方式。
一 短视频拍摄:断点续拍
断点续拍是指,在拍摄过程当中能够进行分段式的拍摄,并能够将最终拍摄的所有内容合成一个视频的功能。玩过抖音的应该都有使用过这个功能,非常的便捷,容易上手。
那么,这个功能的好处就是能够非常轻松的实现不同录制的视频内容的个性化拼接,快速打造出视频拼接功能,能够进一步的强化平台高质量的内容输出。
技术上是这样实现的:
1 断点续拍功能实现,需要在进行断点拍摄时直接调用系统API或第三方的相机库,将每一段mov等格式的视频片段作为临时文件进行保存,存放在沙盒目录中,然后维护视频片段地址列表,等到拍摄结束后,将地址列表中指向的每个视频片段进行合理处理。
2 如果不需要实现删回功能,可以不进行维护视频列表功能,读取所有单次录制时存储的临时视频片段,进行合成即可。
二 重拍或者回删
当对拍摄的短视频的内容不理想或者不满意的时候,可以实现直接减掉,或者重新拍摄。
那么,通过重拍的功能以及断点续拍的功能,就可以对所拍摄的视频内容进行多次的剪辑、拍摄,这样可以使视频在制作过程中更加的灵活和方便。
技术上是这样实现的:
其实,重拍的功能是需要在断点续拍的功能基础上进行实现的,因为,重拍的功能是要维护视频片段地址列表的,进行会回删这个动作的时候只需要去删除视频列表中的相对应的视频片段地址就可以,那么,最终只需要合成地址列表中所指向的视频片段,然后合成完成以后,删除该次录制的所有临时视频片段即可。
三 短视频美化:自定义背景音乐
在编辑短视频内容的过程中,可以自由添加用户自己喜欢的背景音乐,通常情况下自动以背景音乐支持用户进行录音或者选用APP中已有的音乐。
技术上是这样实现的:
首先需要将视频源分成两个轨道,即音频轨道和视频轨道。
然后背景音乐素材剥离出音频轨道,将背景音乐音频轨道插入原声的音频轨道中。可以通过AVMutableAudioMixInputParameters 来调整原声和背景音乐的音量。背景音乐插入成功之后,再讲得到的音频轨道与之前的视频轨道通过调用AVMutableComposition相关类进行合成,最后导出为短视频。
四 贴纸
短视频拍完之后,可以选择用户喜欢的贴纸,贴纸分为场景贴纸和人脸贴纸两种。
技术上是这样实现的:
利用人脸检测功能,分为两种人脸测试方式:
1 通过第三方数据库 OpenCV中开源的跨平台计算机视觉和节气学习库进行人脸识别。
2通过系统自带的CoreImage库,由于CoreImage库已经停供了CIDetector,所以它很适合用来进行人脸检测。
元湃数据比较推荐OpenCV,因为CoreImage库智能定位人脸、鼻子、嘴巴、眼睛等五官的位置,比较局限。
而OpenCV不仅可以实现五官的定位,还可以对眉毛、侧脸、头发等位置进行识别,这样能够支持不同部位的贴纸。
不过,也可以结合这两种方式,就是借用CIDetector出色的性能框出人脸位置,然后再将这一小片区域交给OpenCV识别模型以标出具体的人脸结构和轮廓位置。
五 滤镜和水印
这两个功能是短视频美化最核心的功能了,但由于它们的实现的方式基本上差不多,所以就整合到了一起。
1 选择不同的场景滤镜,进行美化程度的调整。
2 短视频拍摄完成后,可以添加上不同的水印,这个主要是用来保护视频的版权。
技术上是这样实现的:
本质上,其实就是对视频图像进行处理。
大部分短视频SDK的滤镜和水印使用的都是第三方图像处理库--GPUImage库。
滤镜美颜:滤镜的组合,通过组合零度和双边滤波达到美颜效果。如果想达到更好的效果,可以额外添加需要的滤镜或者调整滤镜参数。
水印:通过GPUImageUIElement将水印转成图像数据,再通过BlenderFilter ()将两个图像数据合并。
六 自定义界面布局和UI样式
就是APP图标和功能点位置可以移动转换的功能,且修改成不同的UI样式。
一般情况下,短视频SDK都将会避免将UI逻辑和界面包含进去。保证满足短视频APP开发者的设计交互、UI需求,以及APP的差异化。
技术上是这样实现的:
将UI和SDK高度分离的同时又保持两者的实时性,细分SDK的功能逻辑和UI逻辑。这需要将UI部分代码放入Demo中,而功能逻辑放入SDK中,保证SDK提供完善的API和UI层交互,使得UI层能及时根据SDK的回调调整UI样式。