这两天搞了一下Android的ffmpeg,编译的资料网上很多,但是很杂,记录一下编译过程。
环境: VMware中的Ubuntu
ffmpeg版本: 2.5.3
NDK版本: android-ndk-r10d
整体参照了这位的做法:http://my.oschina.net/wangqin/blog/80345
记录下从中遇到的问题:
1. 执行$ndk/ndk-build中会提示缺少libavutil/ffversion.h:
解决方法:在libavutil下添加ffversion.h,内容如下
#ifndef AVUTIL_FFVERSION_H
#define AVUTIL_FFVERSION_H
#define FFMPEG_VERSION "2.5.3"
#endif /* AVUTIL_FFVERSION_H */
2. 有些会继续报缺少 libavutil/time.h文件,直接改为libavutil/cvtime.h即可;
3. 会出现stdlib.h的函数getenv和config.h里的冲突,网上说可以注释掉所有的stdlib.h,我觉得太烦就将stdlib.h里的getenv改成了_getenv;
4. 会出现libavutil的time.o链接问题,想到之前改了time为avtime,到libavutil文件夹里找到Makefile,修改time为avtime.h,time.o为avtime.o,
重新执行config.sh,再重新ndk即可。
OK,整个就编译好了,文件大小6.3M应该成功了。
稍后放出.mk和.so的下载:
http://download.csdn.net/detail/windowpos/8375465