Ubuntu14.04编译Android FFmpeg详细教程

配置信息:

FFmpeg版本:ffmpeg-3.0.1
ubuntu版本:ubuntu kylin 14.04
Android NDK版本:android-ndk-r10b

一、配置编译环境和下载源码

a、安装Ubuntu14.04操作系统
b、sudo passwd root 配置root权限
c、sudo apt-get update 升级apt-get
d、sudo apt-get install git –y 安装git版本工具
e、sudo apt-get install bison gcc-multilib g++-multilib -y 安装bison,gcc,g++编译工具
f、mkdir /home/AndroidNDK 新建一个NDK目录
https://developer.android.com/ndk/downloads/index.html#download网站上NDK下载下来,复制到AndroidNDK目录下解压。
g、sudo apt-get install vim –y 安装vim文本编辑器
h、Vim /home/主机名/.profile 配置ndk环境变量,在文件末尾加入:

export NDK_HOME=NDK所在位置
export PATH=$NDK_HOME:$PATH

保存退出

i、source /home/主机名/.profile 使修改文件生效
j、Echo $NDK_HOME 如果输出环境变量值,则表示配置成功。

注:在FFmpeg官网下载FFmpeg源代码,复制到ndk的source目录下也可以使用git命令获取:git clone git://source.ffmpeg.org/ffmpeg.git /home/hadoop/AndroidNDK/android-ndk-r10b/sources/FFmpeg

二、编译FFmpeg

A、第一种编译脚本
(1)、首先,我们需要进入FFmpeg源代码中对configure文件进行修改,目的是为了不生成版本号,因为android平台识别不了!
将:

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)'

(2)、然后在FFmpeg源码目录下新建一个build_ffmpeg.sh脚本文件,将下面代码的复制进去。

#清除上次编译的东西
make clean
#配置NDK路径
export NDK=/home/hadoop/AndroidNDK/android-ndk-r10b
#配置工具链
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
#配置平台
export PLATFORM=$NDK/platforms/android-8/arch-arm
#配置编译好了之后的文件输出目录,$(pwd)当前目录下
export PREFIX=$(pwd)/android/
build_one(){
  ./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \ --enable-runtime-cpudetect \ --disable-asm \ --arch=arm \ --cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \ --disable-stripping \ --nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --enable-gpl --enable-shared --disable-static --enable-nonfree --enable-version3 --enable-small \ --enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug \ --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a" }
build_one

#4线程编译
make -j4
make install

之后打开命令行终端,输入以下命令:

chmod a+x build_ffmpeg.sh
./build_ffmpeg.sh

执行完必之后就会在你的当前android/lib目录下生成下列文件:

红色标记出来的文件是连接文件,可以删除掉。

B、第二种编译脚本

#清除上次编译的东西
make clean
#配置NDK路径
export NDK=/home/hadoop/AndroidNDK/android-ndk-r10b
#配置工具链
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
#配置平台
export PLATFORM=$NDK/platforms/android-8/arch-arm
#配置编译好了之后的文件输出目录,$(pwd)当前目录下
export PREFIX=$(pwd)/android/
build_one(){
  ./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \ --enable-runtime-cpudetect \ --disable-asm \ --arch=arm \ --cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \ --disable-stripping \ --nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --enable-gpl --enable-static --disable-shared --enable-nonfree --enable-version3 --enable-small \ --enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug \ --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a" }
build_one

#4线程编译
make -j4
make install

$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libswresample/libswresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a libpostproc/libpostproc.a libavdevice/libavdevice.a -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker $PREBUILT/linux-x86_64/lib/gcc/arm-linux-androideabi/4.8/libgcc.a

这种脚本是将第一种方法中的各类so文件打包成了一个文件。并且也不需要修改configure文件中的配置,当然你改了也无妨,这种生成的文件是xxx.a文件

在build_one()方法中倒数第三行,配置了–enable-static –disable-shared 与第一种不同的是将两个值进行了对调。当然你也可以说对两个值的修饰符进行了对调。
最后编译会生成一个libffmpeg.so的文件。

自此 ,我们就能够编译FFmpeg了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

apple_51426592

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值