FFmpeg for Android

开发Make Face,需要合成视频。iOS有官方例子而Android没有,至少4.1以前肯定没有。花了2个礼拜研究,最后找到最捷径的办法:直接FFmpeg命令。

官网:http://ffmpeg.org/index.html

二进制下载:https://bitbucket.org/trovao/ffmpeg-android

参考:https://github.com/guardianproject/android-ffmpeg-java

 

具体步骤:

1.把生成好的二进制可运行的ffmpeg放入res/raw中

2.通过getResources().openRawResource(R.raw.ffmpeg)得到ffmpeg并通过openFileOutput("/data/data/com.couldhll.makeface/files/ffmpeg", Context.MODE_PRIVATE);复制进有权限执行文件的目录
PS:input.mp4和img001.png...img999.png资源文件通过相同方式复制到该目录

3.运行chmod 777 /data/data/com.couldhll.makeface/files/ffmpeg赋予ffmpeg最高权限

4.执行命令
/data/data/com.couldhll.makeface/files/ffmpeg -y -i /data/data/com.couldhll.makeface/files/input.mp4 -vf \"movie=/data/data/com.couldhll.makeface/files/img%03d.png [watermark]; [in][watermark] overlay=10:10 [out]\" /data/data/com.couldhll.makeface/files/output.mp4
把img001.png到img999.png每一帧叠在input.mp4上生成output.mp4

最后,需要注意是生成的时间可能有些久,一般2-3分钟的视频需要40-50秒。因为Android机型性能相差巨大,生成时间不可控。建议把生成视频这部分移到服务器端。