天天看点

android 编译 aac,FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库-Go语言中文社区...

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单独编译的方法:

fdk-aac单独编译的方法:

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

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

文件目录如下图所示:

android 编译 aac,FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库-Go语言中文社区...

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

android 编译 aac,FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库-Go语言中文社区...

x264库的结构如下:

android 编译 aac,FFmpeg学习—android 编译 ffmpeg 集成fdk-aac、x264 精简解码库-Go语言中文社区...

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

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

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 的源码目录下面,执行如下命令:

[email protected]:/home/wh/FFmpeg-n3.1.3# ./config.sh

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

6.使用方法:

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

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