FFmpeg编译笔记

来源:互联网 发布:mac版我的世界启动器 编辑:程序博客网 时间:2024/06/10 13:34
FFmpeg编译笔记

首先感谢gobitan的《FFmpeg的Android平台移植—编译篇》一文,为本次编译操作提供了思路以及操作参考,原网址如下:http://blog.csdn.net/gobitan/article/details/22750719,而本文是根据前文针对个人操作进行的一些记录。

本文记录了FFmpeg2.5.2编译记录部分,目的是在android平台上使用FFmpeg库。
编译环境如下:
Ubuntu 14.04 LTS
android-ndk-r9d-linux-x86
第一步:下载源代码
到FFmpeg官网http://ffmpeg.org/下载,本文使用的是FFmpeg-2.5.2.tar.bz2,文件大小为7.31M。

第二步:编译源代码
拷贝FFmpeg-2.5.2.tar.bz2进Linux操作系统并解压,拷贝android-ndk-r9d-linux-x86.tar.bz2包进入Linux操作系统并解压。

修改configure文件
进入解压后FFmpeg目录下,对configure文件进行修改。为什么要进行这样的修改?默认设置编译后所得到的库是“库名.so.版本号”,android中jni开发不支持这样的命名规则,所以要如下修改:

将该文件中的如下四行:

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

替换为:

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'


编写build_android.sh

有Linux下编译源代码经验的都知道,在make之前一般都有./configure -xxxx等配置参数操作,但配置众多,这里不一一叙述,编写脚本文件更方便后续修改操作。


build_android.sh内容如下:

#!/bin/bashNDK=/home/chow/android-ndk-r9dSYSROOT=$NDK/platforms/android-15/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86function build_one{./configure \    --prefix=$PREFIX \    --enable-shared \    --disable-static \    --disable-doc \    --disable-ffserver \    --enable-cross-compile \    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \    --target-os=linux \    --arch=arm \    --sysroot=$SYSROOT \    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \    --extra-ldflags="$ADDI_LDFLAGS" \    $ADDITIONAL_CONFIGURE_FLAG}CPU=armPREFIX=$(pwd)/android/$CPUADDI_CFLAGS="-marm"build_one


这里解析一下这个脚本文件,NDK目录是android-ndk-r9d-linux-x86.tar.bz2是解压后的文件夹绝对路径,可以按情况修改;android-15是因为本人所使用的是android4.0.3版本,也可以按需修改。NDK,SYSROOT,TOOLCHAIN目录要确保存在,可能与上面提供的路径不同,可以按情况修改。


修改build_android.sh的权限

chmod 777 build_android.sh

执行build_android.sh

./build_android.sh

编译

make -j8make install

编译完成后,在FFmpeg目录下有一个android目录,里面有我们需要的.so文件与头文件,这都是后续android开发需要的。

库文件如下:



头文件如下:



至此,FFmpeg for android编译完毕,后面会继续记录android开发的操作。







0 0