ffmpeg的确非常的强大,但是它显的太专业:
很多像我这样的菜鸟,不知道怎么编译
很多人在linux环境下编译通过,但是在cygwin下编译不通过
很多人成功编译了ffmpeg 0.8.x,但是却编译不通过更高的版本
很多人不明白configure文件中的--enable--x到底是什么意思
...
还有,很多人编译出了so,但是却没有将ffmpeg.c编译进去(即是:你可以获得ffmpeg的版本号,但是你使用不了命令行的方式,也就意味着:如果你想使用ffmpeg强大的API,那么你必须了解ffmpeg的绝大多数的类),然后,就死活编译不进去
一个简洁的api:诸如linux下面的一条命令,形式诸如:ffmpeg -r 10 -f image2 -i ...
我非常想在windows下编译,但是,最终,我妥协了(实验了无数次,选择了linux虚拟机),并且,采用了最极端的方式:傻瓜版
**********************************************
参见:
https://github.com/halfninja/android-ffmpeg-x264
目的:可以调用ffmpeg中的main方法,以通过“cmd string”的方式与ffmpeg交互
条件:你需要下载一个虚拟机,并且遵循它的步骤
流程:
执行步骤First time stuff
其中1的目的是:下载ffmpeg和libx264的源码
在执行步骤change之前
修改Project/jni/setttings.sh
minimal_featureset=0
因为:作者只是做了:JPEG decoding and x264 encoding
而我们这样做,将获得everything of ffmpeg
修改Project/jni/ffmpeg/libavformat/file.c
在static int file_check(URLContext *h, int mask)中添加
ret |= st.st_mode&S_IRUSR ? mask&AVIO_FLAG_READ : 0;
ret |= st.st_mode&S_IRGRP ? mask&AVIO_FLAG_READ : 0;
ret |= st.st_mode&S_IROTH ? mask&AVIO_FLAG_READ : 0;
ret |= st.st_mode&S_IWUSR ? mask&AVIO_FLAG_WRITE : 0;
ret |= st.st_mode&S_IWGRP ? mask&AVIO_FLAG_WRITE : 0;
ret |= st.st_mode&S_IWOTH ? mask&AVIO_FLAG_WRITE : 0;
因为:我们也许需要使用ffmpeg的功能:图片转换成视频,并写入sdcard。则,需要设置权限
修改jni.c,以符合我们的包结构
执行步骤change