FFmpeg+x264编译Android库
2016-08-12 14:25
281 查看
参考文章: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目录下并运行。
再执行以下操作:
![](https://img-blog.csdn.net/20160812142458362?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3. 编译ffmpeg
将android_ffmpeg_config.sh和android_ffmpeg_make.sh文件放在根目录下。
(1)更改ffmpeg/configure文件,以修改生成后的so文件命名:
![](https://img-blog.csdn.net/20160812142642747?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2) 运行android_ffmpeg_config.sh。
再执行以下操作:
![](https://img-blog.csdn.net/20160812142742272?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(3)运行android_ffmpeg_make.sh文件。
遇到的错误跟引文中不太一样,根据提示做相应修改。
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!"
遇到的错误跟引文中不太一样,根据提示做相应修改。
相关文章推荐
- 如何导入support_v7包
- android串口编程
- Android学习小结之获取被启动的Activity传回的数据
- 聊一聊 Android 6.0 的运行时权限
- android里TextView加下划线
- Android 遇坑总结
- Android屏蔽EditTex获得焦点
- android 蓝牙通信编程
- LayoutInflater使用classloader加载xml问题
- Android 日期时间选择支持各种定制 年月 等 已经对屏幕做过适配
- Android 布局文件慎用Start和End 如marginEnd,layout_alignParentStart等
- Android开发之SoundPool使用详解
- Android中的单例模式使用场景
- Android动态加载技术 简单易懂的介绍方式
- Android设备MTP方式连接PC增删文件无法实时更新的问题
- Android学习小结之Activity保存和恢复状态
- android 列表优化
- Android框架初探寻
- Android 具有动画的 Viewpager滑动CircleIndicator指示器
- Android流媒体的实现