ffmpeg for android 编译


虽然NDK编译ffmpeg的文章在网上已经多如牛毛,但还是经常有人在群里反反复复的问android怎么编译ffmpeg?这个不行,那个不行。。。
我之前也写过两篇关于NDK编译ffmpeg的文章,但基本上写了一大堆的步骤,统统被人无视,为什么?因为大家都很懒,懒得去管那一堆的这个那个步骤。只希望直接拿到所有的源码,然后打一个命令一次性搞定。
好吧,既然大家都这个想,那我就搞一个出来,但还是会有几个“烦人的”步骤:
先交待一下编译环境:

  • 1. Ubuntu 11.04(任何一个发行版都OK)
  • 2. NDK:当前最新的ndk-r8d

具体步骤:

  • 1. 下载ffmpeg for android补丁。这个补丁我是放在我的一个svn服务器上的,所以你需要安装一个svn客户端,RapidSVN, RabbitVCS等都可以,然后checkout https://svn.rg4.net:8443/svn/ffmpeg/(有人回报说一直用TortoiseSVN会一直报需要用户名密码才能check out,如果碰到这种情况请用ustcer/ustcer登录)
  • 2. 下载ffmpeg源码0.11.2(Happiness),虽然现在最新版的ffmpeg已经到1.1.2(Fire Flower)了,但很不幸,0.11.2是当前最后官方支持android的版本(非官方的有很多,最新版本也都可以编译,但用于正式产品,…我不 知道),你暂时不用费力去找了,因为我刚刚已经“费过力”了。ffmpeg下载地址:http://ffmpeg.org/download.html
  • 3. 将步骤2下载到的ffmpeg解开,替换到步骤1的目录下
  • 4. 重新更新ffmpeg for android补丁(因为步骤3已经用原版的ffmpeg 0.11.2的源码覆盖了补丁,这一步是为了将补丁再次打上),将所有冲突的文件给Revert掉。
  • 5. 打开一个terminal,进入ffmpeg补丁目录,到ffmpeg这一层,然后在此:
    • a. 执行config.sh(若是你的ndk目录跟我不一样,请先修改config.sh中最上面的两个设定的路径,相关设定可参考下面的附录)
    • b. 执行完成后,打开config.h,找到其中的#define restrict restrict,将其改为#define restrict,并保存退出。
    • c. 执行ndk-build。

完工。

附录

1. NDK路径设定说明:
这里包括两个部分:
a. 路径位置

我的android SDK及NDK都是放置在/opt/google这个目录下的,完整路径为:

SDK:/opt/google/sdk
NDK:/opt/google/ndk-r8d

若你放置的路径有所不同,请修改成你自己的路径。

b. 环境变量:修改~/.bashrc,将android SDK, android NDK加入 PATH设定,以简化编译操作。以下是我的设定:

  1. #export ANDROID_NDK_ROOT=/opt/google/ndk-r7c
  2. export ANDROID_NDK_ROOT=/opt/google/ndk-r8d
  3. export ANDROID_SDK_ROOT=/opt/google/sdk
  4. #jacky, it’s new NDK which puts ndk-build in platform-tools folder
  5. export PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_NDK_ROOT:$ANDROID_SDK_ROOT/platform-tools

若你仍有问题,可随时与我取得联络:jacky@rg4.net
若你发现这个补丁,或者这个文档需要修改、补充、完善,请直接commit到服务器,同时请容许我代表全世界人民对您的贡献表示感谢(一直被代表,也让我代表一下)。

Leave a comment

Your email address will not be published. Required fields are marked *