天天看點

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 的庫考到項目裡面進行連接配接。

下一篇講解如何使用該庫。