Ubuntu 下用NDK编译移植 FFmpeg 2.0 (配置最新版x264) 到Android

将x264配置到ffmpeg中需要先编译x264,生成静态库或动态库。因为264的静态库本身不大(我编译完成后是1.1M)且考虑到平台移植问题,这里选择的是编译生成静态库。

准备,新建工作空间

(1)创建总目录FFmpeg-Android

eg: mkdir workspace --> cd workspace --> mkdir FFmpeg-Android --> cd FFmpeg-Android

(2)创建保存x264静态库的目录 android-x264

(在FFmpeg-Android目录下)mkdir 264 --> cd 264

1、编译x264

(1)去官网:http://www.videolan.org/developers/x264.html 下载最新的264源代码。这里下载的是2013年10月份出的版本0.14。将压缩包解压缩到264FFmpeg-Android/264目录下,

(2)编写脚本文件:

export NDK=$NDK_HOME
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt
export PLATFORM=$NDK/platforms/android-19/arch-arm
export PREFIX=../../android-x264

./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM

注意:这里涉及到路径的变量需要根据你们自己的情况来调整。

PREBUILT 变量保存的是NDK交叉编译链的路径,

PLATFORM 变量保存的是NDK进行链接时查找库文件的路径(arch-arm目录下保存的是各种andorid平台下的c库头文件和静态以及动态库)

PREFIX 变量保存的是编译生成的静态库保存的路径

(3)运行脚本,结果如下图

Ubuntu 下用NDK编译移植 FFmpeg 2.0 (配置最新版x264) 到Android

 

(4)执行完刚才的脚本后,会在当前目录生成配置文件,这里还需要修改以下几个文件,原因是:编译成功后在eclipse下运行会出现 "cannot locate symbol 'log2f' " 的错误

修改1、config.h

---- #define HAVE_LOG2F 1

+++#define HAVE_LOG2F 0

 

修改2、encoder/encoder.c 、 encoder/ratecontrol.c 、encoder/analyse.c 、encoder/set.c

在文件开头处添加

+++ #include <math.h>

+++ //<!-- add by chance_yin 2013.12.27
+++ #undef log2f(x)
+++ #undef log2f
+++ #define log2f(x) (logf(x)*1.4426950408889634f)
+++ // end add by chance_yin-->

FFmpeg 的详细介绍:请点这里
FFmpeg 的下载地址:请点这里

推荐阅读:

相关推荐