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 源碼目錄下面
檔案目錄如下圖所示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iM4cTOlVDMiZjM1ADM5YGZmNTMlhTY5kzYiNzN5ATMk9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
其中fdk-aac的檔案裡面結構如下:
x264庫的結構如下:
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 的庫考到項目裡面進行連接配接。
下一篇講解如何使用該庫。