x264是性能最好的H.264/AVC编码器,基于GNU GPL协议。FFmpeg可以使用x264作为编码库,能够提高编码性能。
准备
环境linux
下载ffmpeg源码: http://www.ffmpeg.org/download.html
下载x264源码: git://git.videolan.org/x264.git
下载linux版ndk: http://developer.android.com/ndk/downloads/index.html
将源码和ndk都下载放到本地目录。
编译脚本
首先,跟ffmpeg一样,还是先进入到x264目录,修改configure文件。定位到
else
echo "SOSUFFIX=so" >> config.mak
echo "SONAME=libx264.so.$API"
这几行,将"libx264.so.$API"替换为"libx264.so",文件名中就不要版本了。
在目录下新建build_android_arm.sh脚本,写入以下代码:
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--disable-pthread \
--host=arm-linux \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
make clean
make
make install
}
PREFIX=$(pwd)/android/$CPU
build_one
具体过程跟编译ffmpeg类似。
然后修改build_android_arm.sh文件的权限:
sudo chmod +x build_android_arm.sh
并执行:
./build_android.sh
一会,便在android/arm目录下看到编译结果了。
编译包含x264的ffmpeg
要加入x264,需要修改脚本。在编译ffmpeg脚本基础上,在头文件和库的路径中加入x264的编译结果,然后configure的参数中支持x264就可以了。具体如下:
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--enable-nonfree \
--enable-gpl \
--enable-asm \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-symver \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-protocol=rtp \
--enable-zlib \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-I$(pwd)/x264/include/"
ADDI_LDFLAGS="-L$(pwd)/x264/lib/"
build_one
然后将编译好的include和lib目录拷贝至ffmpeg/x264目录下,再执行build_android_arm.sh脚本就可以了。
PS:LiveVideoStack社区准备在北京10.19-10.20日举行多媒体技术应用会议,主办方送了我一张票,鉴于我在深圳,我准备送出这张票,价值2500元,送票要求,关注我超过半年以上,有过一次赞赏,且人在北京,能去。后台留言“门票”,如果你的ID我很熟悉,毫无疑问,这个票肯定送你。由于只有一张,没有送到的,可以混眼熟,或者直接点击“阅读原文”,使用优惠码(LVSCon-hejunlin)进行9折购买。