目前市面上音视频交互框架基本上分两种,一个是类似抖音快手那样的从相机交互界面出发的,往相机帧加美颜,贴纸等各种特效的交互,另一个是类似剪映,必剪等更专业一点的视频编辑软件,它增加了多轨道,转场等一些更复杂的效果。

  

 

不过万变不离其宗,都是解出视频帧,然后对视频帧做特效,然后合成视频这一流程。接下来我们就来讲讲整个流程中每个阶段我们会用到什么技术

1.  解码出视频帧与音频帧:这里有两个技术方案,用FFmpeg软解和用MediaCodec硬解。用FFmepg软解的话基本都是在FFmpeg的API上进行操作,不过需要自己去编译FFmpeg的so库,且得考虑包大小问题。用MediaCodec的话首先是用Android的多媒体框架里的MediaExtractor,MediaCodec等类来进行音频文件的视频跟音频轨道分离,以及解码出视频帧跟音频帧。

2. 现在成熟的APP,获得视频帧后基本上都会做一层视频帧的理解,比如做美颜的软件,需要提前去分析该帧来获得眼睛,脸轮廓等的位置,以便后边进行大眼,瘦脸等效果,这一步需要借助深度学习模型,后边我也会补上这一专题(移动端这么进入深度学习)

3. 第三步是去做具体的特效,将视频帧做为纹理输入,将第二步获得的信息作为参数输入,利用Opengl去做特效,这一步基本就是搭建好一个gl的框架和一些shader特效的编写,比如美白,大眼,贴纸等等,每一个都是专题,后边我也会写文章来具体分析

 

4. 最后就是将渲染出来的最终帧合成视频,这一步跟第一步差不多,要么用FFmpeg,要么用MediaCodec大家族

当然这只是简单带大家领略一下一个视频编辑框架是怎样的,具体里边会有各种多线程处理,音视频数据的解析,各种特效的实现都是非常值得大家学习的

最后也欢迎大家添加我的微信号,第一时间会在这里更新哦,有什么问题也欢迎私信与我交流

 

Logo

致力于链接即构和开发者,提供实时互动和元宇宙领域的前沿洞察、技术分享和丰富的开发者活动,共建实时互动世界。

更多推荐