Android FFmpeg编译时导入libx264

在编译FFmpeg源码的时候默认是没有libx264的,使用--enable-libx264的前提是你有相应cpu的x264.h文件和libx264.a文件,这是需要我们手动去编译libx264源码再导入的

如果你还没有编译好的libx264文件,可以参考我的另一篇文章
(1) Android NDK编译libx264源码
如果你还没有成功编译和使用FFmpeg,可以参考我的另一篇文章
(2) Android NDK编译和导入FFmpeg源码

步骤:

1.编译libx264源码,得到相应cpu的x264.h和libx264.a文件
2.在FFmpeg编译脚本文件中加入--extra-cflags和--extra-ldflags参数,指向x264的头文件路径和静态库文件路径,并在编译脚本中加入--enable-libx264和--enable-gpl参数,enbale-gpl表示遵循GPL协议
3.编译FFMpeg源码

FFMpeg编译脚本

#!/bin/bash
set -x
##########################根据自己的电脑环境修改######################Start
API=21
#armv8-a,armv7-a,i686,x86-64
ARCH=arm64
#armv8-a,armv7-a,i686,x86-64
CPU=armv8-a
#aarch64,armv7a, i686, x86_64
TOOL_CPU_NAME=aarch64
#so file output dir
OUTPUT=/home/qlx/ffmpeg_build/$CPU
NDK=/root/Android/Sdk/ndk/21.4.7075529
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAIN/sysroot
TOOL_PREFIX="$TOOLCHAIN/bin/$TOOL_CPU_NAME-linux-android"
CC="$TOOL_PREFIX$API-clang"
CXX="$TOOL_PREFIX$API-clang++"
STRIP="$TOOL_PREFIX-strip"
#if build armv7,use this
#STRIP="$TOOLCHAIN/bin/arm-linux-androideabi-strip"
#编译好的H264文件位置
COMPILE_H264_PATH=/usr/qlx/x264_build/$CPU
######################################################################End


OPTIMIZE_CFLAGS="-march=$CPU"
function build
{
  ./configure \
  --prefix=$OUTPUT \
  --target-os=android \
  --arch=$ARCH  \
  --cpu=$CPU \
  --disable-asm \
  --disable-stripping \
  --disable-programs \
  --disable-static \
  --disable-doc \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-symver \
  --disable-ffmpeg \
  --enable-shared \
  --enable-cross-compile \
  --cc=$CC \
  --cxx=$CXX \
  --strip=$STRIP \
  --sysroot=$SYSROOT \
  --extra-cflags="-Os -fpic -I$COMPILE_X264_PATH/lib OPTIMIZE_CFLAGS " \
  --extra-ldflags="-L$COMPILE_X264_PATH/lib"

  make clean all
  # 这里是定义用几个CPU编译
  make -j8
  make install
}
build
重要的参数说明

COMPILE_H264_PATH:表示我们已经编译好的的libx264文件路径
extra-cflags:加入-I+头文件路径,表示编译时要include的文件
extra-ldflags:加入-L静态库文件路径,表示编译时加入这些Library作为编译环境

你可能感兴趣的:(Android FFmpeg编译时导入libx264)