Android(android-ndk-r8b)下编译X264

参考资源:

(参考1)  android-ndk-r8d编译x264:   http://blog.csdn.net/vblittleboy/article/details/9302675

(参考2)  Android视频采集+H264编码: http://www.360doc.com/content/11/0302/21/3700464_97587859.shtml

(参考3)  Ubuntu下编译ffmpeg: https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide


目的:实现Android采集相机后进行H264软编码

环境:Ubuntu 12.04    X264   ffmpeg

【步骤1】Ubuntu下编译X264

(1)安装依赖库

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libgpac-dev 
mkdir ~/ffmpeg_sources

(2)编译及初始化

Yams(X264与ffmpeg用到了Yasm,第一步应先安装Yasm)

The first step is to compile Yasm which is an assembler used by x264 and FFmpeg. Ubuntu 13.10, Ubuntu 13.04, and Mint 15 users can alternatively install theyasm package from the repository instead of compiling.

cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
export "PATH=$PATH:$HOME/bin"

libx264

cd ~/ffmpeg_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

ffmpeg

cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
export PKG_CONFIG_PATH
./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" \
   --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --extra-libs="-ldl" --enable-gpl \
   --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora \
   --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
make
make install
make distclean

【步骤2】使用Android NDK r8b 编译 x264

使用【步骤1】中到方法编译出libx264.a后,在eclipse工程中jni无法链接(详见: http://bbs.csdn.net/topics/390061375),报错:libx264.a: could not read symbols: File format not recognized。因此,须使用NDK编译x264。

(1)进入x264目录下,创建 myconfig.sh 文件,添加如下内容:


export ARM_ROOT=/home/konka/software/android-ndk-r8b
export ARM_INC=$ARM_ROOT/platforms/android-14/arch-arm/usr/include/
export ARM_LIB=$ARM_ROOT/platforms/android-14/arch-arm/usr/lib/
export ARM_TOOL=$ARM_ROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86
export ARM_LIBO=$ARM_TOOL/lib/gcc/arm-linux-androideabi/4.6.x-google
export PATH=$ARM_TOOL/bin:$PATH
export ARM_PRE=arm-linux-androideabi

./configure --disable-gpac --extra-cflags=" -I$ARM_INC -fPIC -DANDROID -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID  -Wa,--noexecstack -MMD -MP " --extra-ldflags="-nostdlib -Bdynamic -Wl,--no-undefined -Wl,-z,noexecstack  -Wl,-z,nocopyreloc -Wl,-soname,/system/lib/libz.so -Wl,-rpath-link=$ARM_LIB,-dynamic-linker=/system/bin/linker -L$ARM_LIB -nostdlib $ARM_LIB/crtbegin_dynamic.o $ARM_LIB/crtend_android.o -lc -lm -ldl -lgcc" --cross-prefix=${ARM_PRE}- --disable-asm --host=arm-linux --disable-shared --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static

其中,ARM_ROOT应改为自己电脑中NDK路径。


(2)在/etc/profile最后,添加如下语句:

export ARM_LINUX_ANDROIDEABI_GCC=/home/konka/software/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin 
export PATH=$ARM_LINUX_ANDROIDEABI_GCC:$PATH
保存,执行 source /etc/profile 同步资源。


(3)进入x264目录,执行如下语句:

sudo sh ./myconfig.sh
make
make install
注意:在执行sudo sh ./myconfig.sh 时,若遇到 ./configure command is not found,有可能是WIndows下与Linux下到编码不同造成到,解决方案:dos2unix Makefile


【步骤3】生成ibH264Android.so

下载(参考2)中的Eclipse工程,将~/workspace/H264Android/jni/libx264下的文件相应替换为步骤2中编译生成的文件(保存在~/ffmpeg_build/include  ~/ffmpeg_build/lib),打开 jni下到Android.mk文件,修改ndk路径为自己的路径,执行如下命令即可:

ndk-build clean
ndk-build

如上,成功生成 libH264Android.so

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值