FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库

1.编译要求

Ubuntu 14.04 lts 64位

ffmpeg-3.1.3

fdk-aac-0.1.4

x264-snapshot-20170407-2245

android-ndk-r12b

 

2.编译步凑

1.先单独编译x264和fdk-aac 的Android 平台的库。

x264单独编译的方法: 

http://blog.csdn.net/xiaibiancheng/article/details/69668485

fdk-aac单独编译的方法:  

http://blog.csdn.net/xiaibiancheng/article/details/69676965

2.下载ffmpeg 源码解压,下载地址:

https://github.com/FFmpeg/FFmpeg/releases/tag/n3.1.3

将上面编译产生的x264和fdk-aac 的库拷贝到解压的ffmpeg 源码目录下面

文件目录如下图所示:

其中fdk-aac的文件里面结构如下:

x264库的结构如下:

3.下载ndk 并解压,下载地址:

https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip

下载完成后,随便解压到指定的目录。

4.在ffmpeg 的源码目录下面创建config.sh 编译脚本,脚本内容如下:

#!/bin/bash
NDK="/home/wh/android-ndk-r12b"
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
function build_one
{
./configure --prefix=$PREFIX \
		--disable-shared \
		--enable-static \
		--disable-debug \
                --disable-doc \
                --disable-ffplay \
                --disable-ffprobe \
                --disable-ffserver \
                --disable-avdevice \
                --disable-doc \
                --disable-symver \
                --disable-encoders  \
                --disable-muxers \
                --disable-demuxers \
                --disable-parsers  \
                --disable-bsfs \
                --disable-protocols \
                --disable-indevs \
                --disable-outdevs \
                --disable-filters \
                --disable-decoders \
		--enable-small \
                --enable-asm \
		--enable-nonfree \
                --enable-neon \
		--enable-gpl \
		--enable-muxer=rawvideo  \
		--enable-encoder=rawvideo  \
                --enable-libx264 \
                --enable-encoder=libx264 \
		--enable-encoder=libfdk_aac \
                --enable-decoder=libfdk_aac \
                --enable-libfdk-aac \
		--enable-demuxer=aac \
		--disable-encoder=libfaac \
		--enable-protocol=file \
                --enable-muxer=mp4  \
		--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
		--target-os=android \
		--arch=arm \
                --disable-libfaac \
		--enable-cross-compile \
		--sysroot=$SYSROOT \
		--extra-cflags="-Os -fpic $ADDI_CFLAGS -mfpu=neon" \
		--extra-ldflags="$ADDI_LDFLAGS" \
                $ADDITIONAL_CONFIGURE_FLAG
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm -I/home/wh/FFmpeg-n3.1.3/x264/include/ -I/home/wh/FFmpeg-n3.1.3/fdkacc/include/  -DANDROID"
ADDI_LDFLAGS="-L/home/wh/FFmpeg-n3.1.3/x264/lib/ -L/home/wh/FFmpeg-n3.1.3/fdkacc/lib/"

CPU=armv5te
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG="--disable-armv6 --disable-armv6t2 --disable-vfp --disable-neon"
build_one

#arm v7n
CPU=armv7-a
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one

注意:其中 --enable-libx264为打开x264 库编译,--enable-encoder=libx264 设在h264 编码库为x264 编码,--enable-encoder=libfdk_aac为打开libfdk-aac 库,--enable-decoder=libfdk_aac和--enable-libfdk-aac设置aac 的编码和解码库为libfdk-aac 编码库,这样就会替换内部的默认aac编码库。

 

NDK 的路径要设置为你自己解压路径。

 

其中 ADDI_CFLAGS="-marm -I/home/wh/FFmpeg-n3.1.3/x264/include/ -I/home/wh/FFmpeg-n3.1.3/fdkacc/include/  -DANDROID"
ADDI_LDFLAGS="-L/home/wh/FFmpeg-n3.1.3/x264/lib/ -L/home/wh/FFmpeg-n3.1.3/fdkacc/lib/"   里面的头文件路径和库连接路径也要修改为你的路径。

 

上面的编译脚本是精简过的去除了其它无用的编解码库,最终编译完后只有,1M左右,

 

5.编译

进入ffmpeg 的源码目录下面,执行如下命令:

root@ubuntu:/home/wh/FFmpeg-n3.1.3# ./config.sh

执行完这个命令后就会在源码目录下面生成一个android 文件夹,里面就是生成的库。

6.使用方法:

以上面的方式编译的库是静态库,x264和fdk aac 也是静态库,在使用的时候要把x264,和fdkaac 的库考到项目里面进行连接。

 

下一篇讲解如何使用该库。

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值