如何编译并使用x264库

版权声明:我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动.转载务必转载所有,且须注明出处。否则保留追究法律责任 https://blog.csdn.net/hejjunlin/article/details/82979353

x264是性能最好的H.264/AVC编码器,基于GNU GPL协议。FFmpeg可以使用x264作为编码库,能够提高编码性能。

准备

环境linux

将源码和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脚本就可以了。

猜你喜欢

转载自blog.csdn.net/hejjunlin/article/details/82979353