一、ffmpeg源碼目錄

一、安裝ndk
1.下載ndk
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
2.安裝unzip
apt-get install unzip
3.解壓到當(dāng)前目錄
unzip android-ndk-r14b-linux-x86_64.zip
解壓到指定目錄:
unzip android-ndk-r14b-linux-x86_64.zip -d /ndk_build/
4.打開(kāi)bashrc
vim ~/.bashrc
5.在bashrc末尾插入環(huán)境變量配置:
export NDKROOT=/ndk_build/android-ndk-r14b
export PATH=$NDKROOT:$PATH
6.按ESC再輸入 :wq 保存退出
7.配置生效
source ~/.bashrc
二、ffmpeg編譯
-
1.下載ffmpeg2.6.9(這個(gè)版本比較穩(wěn)定)
-
2.解壓
tar -xzf ffmpeg-2.6.9.tar.gz
-
3.進(jìn)入ffmpeg-2.6.9目錄創(chuàng)建build_android.sh腳本并打開(kāi)
touch build_android.sh
vim build_androuid.sh
-
4.編輯腳本(腳本前面幾行的路徑一定要核對(duì)準(zhǔn)確)
#!/bin/bash make clean #指向NDK所在路徑 export NDK=/ndk_build/android-ndk-r14b #最低兼容版本9路徑,9以下有很多不同建議兼容到9 export SYSROOT=$NDK/platforms/android-9/arch-arm/ #指定編譯器路徑,即ndk中的GCC export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 #指定編譯arm平臺(tái)下的cpu export CPU=arm #編譯后文件存放路徑(build_androuid.sh所在當(dāng)前目錄/android/arm) export PREFIX=$(pwd)/android/$CPU export ADDI_CFLAGS="-marm" #-------------------------------------- #執(zhí)行ffmpeg中的configure命令 #target-os=linux在linux環(huán)境下編譯 #開(kāi)啟動(dòng)態(tài)庫(kù)--enable-shared \ #禁止靜態(tài)庫(kù)--disable-static \ #清除yasm信息--disable-yasm \ #-------------------------------------- ./configure --target-os=linux \ --prefix=$PREFIX --arch=arm \ --disable-doc \ --enable-shared \ --disable-static \ --disable-yasm \ --disable-symver \ --enable-gpl \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install -
5.修改生成文件的后綴名格式:將ffmpeg目錄中configure配置文件傳輸?shù)阶约弘娔X上將第2779-2782行替換成如下格式再替換linux下的configure文件(因?yàn)閍ndroid系統(tǒng)中必須以.so結(jié)尾才能運(yùn)行):
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'

-
6.給整個(gè)ffmpeg目錄添加可執(zhí)行權(quán)限
chmod 777 -R ffmpeg-2.6.9
-
7.執(zhí)行編譯腳本
./build_androuid.sh
-
8.編譯大概需要10-20分鐘編譯完成后目錄如下:
紅色標(biāo)記的8個(gè)so就是我們需要在android平臺(tái)下使用的,不過(guò)這樣編譯出來(lái)的是整套未裁剪的so庫(kù),8個(gè)庫(kù)總共有12.7M。集成到項(xiàng)目中大多時(shí)候我們會(huì)選擇裁剪ffmpeg。
