FFmpeg+x264编译Android库

参考文章:http://blog.csdn.net/chance_yin/article/details/17711003

1. 准备

(1)版本 ffmpeg-3.1.1.tar.bz2  last_x264.tar.bz2

(2) 目录

根目录:/home/lsj/ffmpeg_x264

生成文件目录:/home/lsj/ffmpeg_x264/build

ffmpeg目录:/home/lsj/ffmpeg_x264/ffmpeg

x264目录:/home/lsj/ffmpeg_x264/x264

2. 编译x264

将android_x264.sh文件放在x264目录下并运行。

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

./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


再执行以下操作:



3. 编译ffmpeg

将android_ffmpeg_config.sh和android_ffmpeg_make.sh文件放在根目录下。

(1)更改ffmpeg/configure文件,以修改生成后的so文件命名:


(2) 运行android_ffmpeg_config.sh。

T=`pwd`/build/ffmpeg && rm -rf $DEST
SOURCE=`pwd`/ffmpeg
BUILD_HOME=/home/lsj/ffmpeg_x264/build
echo $DEST
echo $SOURCE

if [ -d ffmpeg ]; then
  cd ffmpeg
else
  echo "can not find ffmpeg source code"
  exit 1
fi

if [ "$PIPESTATUS" != "0" ] ; then
 echo "error in FFmpeg-Android.sh : 14 "
fi


TOOLCHAIN=/home/lsj/ffmpeg_x264/toolchain
SYSROOT=$TOOLCHAIN/sysroot/
$NDK_HOME/build/tools/make-standalone-toolchain.sh --platform=android-19 --install-dir=$TOOLCHAIN

export PATH=$TOOLCHAIN/bin:$PATH
export CC="arm-linux-androideabi-gcc"
export LD=arm-linux-androideabi-ld
export AR=arm-linux-androideabi-ar

#CFLAGS="-O3 -Wall -mthumb -pipe -fpic -fasm \
#  -finline-limit=300 -ffast-math \
#  -fstrict-aliasing \
#  -fmodulo-sched -fmodulo-sched-allow-regmoves \
#  -Wno-psabi -Wa,--noexecstack \
#  -DANDROID -DNDEBUG"

CFLAGS="-Os -fPIC -marm"

FFMPEG_FLAGS="--target-os=linux \
  --arch=arm \
  --sysroot=$SYSROOT \
  --enable-cross-compile \
  --cross-prefix=arm-linux-androideabi- \
  --enable-shared \
  --enable-static \
  --disable-symver \
  --disable-doc \
  --disable-ffplay \
  --disable-ffmpeg \
  --disable-ffprobe \
  --disable-ffserver \
  --disable-avdevice \
  --disable-avfilter \
  --disable-filters \
  --disable-devices \
  --disable-pthreads \
  --disable-everything \
  --enable-gpl \
  --enable-muxers \
  --enable-encoders \
  --enable-protocols  \
  --enable-parsers \
  --enable-demuxers \
  --enable-decoders \
  --enable-bsfs \
  --enable-network \
  --enable-swscale  \
  --enable-libx264 \
  --enable-encoder=libx264 \
  --enable-decoder=h264 \
  --enable-muxer=h264 \
  --enable-demuxer=h264 \
  --disable-demuxer=sbg \
  --disable-demuxer=dts \
  --disable-parser=dca \
  --disable-decoder=dca \
  --extra-libs=-lx264 \
  --enable-asm \
  --enable-version3"

VERSION=armv7
cd $SOURCE

EXTRA_CFLAGS="-I$BUILD_HOME/include -march=armv7-a"
EXTRA_LDFLAGS="-L$BUILD_HOME/lib"
echo "EXTRA_CFLAGS= $EXTRA_CFLAGS"
echo $EXTRA_LDFLAGS
#PREFIX="$DEST/$VERSION" && mkdir -p $PREFIX
PREFIX="$BUILD_HOME/armv7" && mkdir -p $PREFIX

FFMPEG_FLAGS="$FFMPEG_FLAGS --prefix=$PREFIX"
echo "PREFIX=$PREFIX"
echo $FFMPEG_FLAGS
sh  ./configure $FFMPEG_FLAGS --extra-cflags="$CFLAGS $EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" | tee $PREFIX/configuration.txt
echo "$?"
if [ "$?" = "0" ] ; then 
 echo "./configure success in shell-script"
else
 echo "./configure erroe in shell-script"
 exit 1
fi
cp config.* $PREFIX


再执行以下操作:


(3)运行android_ffmpeg_make.sh文件。

T=`pwd`/build/ffmpeg && rm -rf $DEST
SOURCE=`pwd`/ffmpeg
BUILD_HOME=/home/lsj/ffmpeg_x264/build

TOOLCHAIN=/home/lsj/ffmpeg_x264/toolchain
SYSROOT=$TOOLCHAIN/sysroot/
export PATH=$TOOLCHAIN/bin:$PATH
export CC="arm-linux-androideabi-gcc"
export LD=arm-linux-androideabi-ld
export AR=arm-linux-androideabi-ar

CFLAGS="-Os -fPIC -marm"

VERSION=armv7
cd $SOURCE

#PREFIX="$DEST/$VERSION" && mkdir -p $PREFIX
PREFIX="$BUILD_HOME/armv7" && mkdir -p $PREFIX

EXTRA_LDFLAGS="-L$BUILD_HOME/lib"

make clean
make -j4 || exit 1
make install || exit 1
#rm libavcodec/log2_tab.o
rm libavutil/log2_tab.o
#rm libavcodec/reverse.o
rm libavutil/reverse.o
rm libavformat/golomb_tab.o
rm libavformat/log2_tab.o
rm libswscale/log2_tab.o
rm libswresample/log2_tab.o
$CC -llog -lm -lz -shared --sysroot=$SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $EXTRA_LDFLAGS libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libavformat/*.o libswresample/*.o libswscale/*.o libswscale/arm/*.o libswresample/arm/*.o compat/strtod.o -o $PREFIX/libffmpeg.so  -lx264 -L$BUILD_HOME/lib/-lx264

cp $PREFIX/libffmpeg.so $PREFIX/libffmpeg-debug.so

arm-linux-androideabi-strip --strip-unneeded $PREFIX/libffmpeg.so

echo "build successfully!"


遇到的错误跟引文中不太一样,根据提示做相应修改。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值