Android 音视频编辑经验总结及开源工程分享

       提到音视频编辑方案,大家最容易搜到的可能是ffmpeg这个牛X的开源方案。ffmpeg 是基于C语言的著名视频编解码方案。国内有也有不少的公司将ffmpeg 移植到iOS和android 平台进行视频处理,例如,美拍、秒拍等。但是其实iOS和Android自带的多媒体框架一点也不比ffmpeg弱。下面就中常遇到的问题谈一谈在安卓视频编辑上面的经验分享。

一.做Android视频编辑的可行性开源方案有哪些?

第一个就是大家熟知的ffmpeg,将ffmpeg移植到anroid平台,编译成so文件,由jni 调用,可以实现音视频的分离、裁剪、拼合、加字幕、滤镜等功能。

第二个就是android 自带的MediaCodec 框架,MediaCodec框架底层调用的是StageFright库,StageFright库是默认封装在android系统里面的。

第三个,如果只是做视频音频混合的话,可以用这个开源工程mp4parser。

二.这几种框架的优缺点各有哪些?

分析优缺点,那么就从功能多少、学习门槛、运行效率、稳定性、打包占用空间这几个方面来总结一下。

a.功能多少方面:

        ffmpeg 无疑排第一位,他集合了视频编解码、视频滤镜、流媒体推流、音频各种特效等等,基本上你能想到的功能都在里面。

        第二位当是Android的亲儿子,MediaCodec。MediaCodec涵盖了音视频解复用、音频解码、视频解码、音频编码、视频编码、音视频合并的整个流程。跟ffmpeg相比,MediaCodec 更接近底层硬件。这个方案如果想要实现视频的滤镜、字幕、拼接等功能的话,需要自己配合OpenGL ES 来实现,另外,音视频拼接的话,要考虑到不同音频采样率的重采样问题,音频重采用问题,需要懂得傅立叶变换相关的离散信号变换方法,如果要实现音频特效,如变声、均衡器的话,也需要懂得上述信号变换方法。因此,很少公司会采用。

第三位mp4praser,可以实现音视频编解码及编辑。

        b.学习门槛:

       如果只是做视频转码、加文字、图片特效等,ffmpeg和MediaCodec 旗鼓相当,mp4parser最低(但是基于mp4parser的资料比较少,其实也未必)。如果是要拼接视频、做音频         的变声、均衡器特效的话,MediaCodec是难度最高的,因为这一切需要你从底层原理做起。

       c、运行效率:MediaCodec硬解硬编最快,ffmpeg硬解硬编方案稍慢,mp4parser(只能软解软编)最慢。

       d、稳定性: MediaCodec和ffmpeg 的硬解硬编方案旗鼓相当,mp4parser在低配的机器上可能出现卡顿的问题。

       f、打包占用空间:国内最得最好的ffmpeg硬解硬编方案,其so文件在10.几M,MediaCodec由于是纯java 代码,占用空间很容易做到几百K甚至几十K。mp4parser也是纯Java,开发包同样非常小。

三、现有的免费开源方案和收费商业方案介绍。

基于ffmpeg 的免费软解软编方案在github.com有很多,例如:EpMedia,硬解硬编方案还没有看到。商业收费的方案有趣拍、美摄等。不过这些商业方案是按年收费的有点小贵。

基于MediaCodec 的免费开源方案有m4m,videotranscoder等,不过这些开源方案,表面看上去功能很强大,实际使用的时候会遇到不少坑,只适用于对MediaCodec的原理进行研究。目前尚未发现一个开源成熟的MediaCodec项目。做MediaCodec成熟商业方案的有七牛、美视这两家。其中,七牛的商业方案,笔者亲测,到目前为止,还有一些明显的bug,可能是起步比较晚吧,请谨慎使用。

      近期打算做一个更详细的短视频编辑方案对比分析,更多移动短视频编辑的方面的经验,请关注笔者。

你可能感兴趣的:(Android 音视频编辑经验总结及开源工程分享)