基於《雲服務器Ubuntu基本配置》這篇文章,已經搭建好了雲服務器,這篇文章使用Ubuntu編譯FFmpeg。html
一、建立NDK
目錄,而且上傳Linux
版本的NDK
。linux
這裏使用的ndk
版本是r10e
。android
二、賦予ndk
文件夾下全部文件的drwx
權限,使其可執行。shell
chmod 777 -R ndk
NDK目錄給予權限以後,可看到.bin
文件顯示成綠色(可執行)了。vim
三、解壓執行.bin
文件bash
到ndk
目錄下,./android-ndk-r10e-linux-x86_64.bin
執行文件。服務器
上圖顯示已經執行完成了。架構
四、環境變量配置ide
使用命令vim ~/.bashrc
進入環境配置文件,添加post
export NDKROOT=/usr/ndk/android-ndk-r10e
export PATH=$NDKROOT:$PATH
複製代碼
五、更新環境變量
使用命令source ~/.bashrc
更新環境變量
至此,NDK環境已經搭建好了。
到官網下載FFmpge. zip
。
這裏使用FFmpeg 2.6.9
版本。
一、上傳文件
使用xftp
上傳ffmpeg
壓縮包到Ubuntu
。
二、解壓FFmpeg
使用命令unzip ffmpeg-2.6.9.zip
解壓文件
Xftp查看,顯示解壓文件
三、編寫shell腳本文件
build_android.sh
文件:
#!/bin/bash
make clean
export NDK=/usr/ndk/android-ndk-r10e
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./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
複製代碼
注意:
1)換行的時候須要有\,注意不要有額外的空格,不然編譯出錯
2)腳本文件統一轉爲UTF-8無BOM格式。可經過note pad++進行轉碼,或者先由Linux建立文件再由Windows編輯。
3)NDK儘可能不要使用太新的版本,通常使用Android-9便可,不然新版本會出現不兼容的問題。
4)將編寫好的shell腳本放在解壓後的ffmpeg-2.6.9文件夾中。
指定NDK路徑:export NDK=/usr/ndk/android-ndk-r10e; 配置CPU架構類型:export CPU=arm,PREFIX是指定動態庫輸出的路徑,而後disable一些不須要的庫(可減少輸出的動態庫的大小); enable-shared:生成共享庫。
四、build_android.sh
給予權限。
顯示build_android.sh
沒有執行權限。
使用chmod 777 build_android.sh
命令,給予build_android.sh
執行權限。
五、執行文件build_android
使用./build_android.sh
命令執行
報錯command not found
沒有make命令。安裝make:sudo apt-get install make
。
六、安裝dos2unix
命令:sudo apt-get install tofrodos
這裏的文件是在window下建立的,須要使用dos2unix build_android.sh
命令轉換下文件。
說明: 若是出現問題:bad interpreter : No such file or directory,緣由:沒有將文件轉成Linux編碼格式。
轉換Linux編碼格式有兩種方式:
一、在Linux下建立這個文件touch build_android.sh,從Linux傳出到桌面把腳本命令拷入這個文件中,上傳到Linux;
二、使用 dos2unix build_android.sh 轉成Linux編碼格式
複製代碼
七、再次執行文件build_android
編譯:
上圖就是編譯完成生成動態庫。
生成的動態庫有.56,.5
的庫,這種庫Android
很難加載到,咱們須要的是後綴.so
的庫,這就須要修改configure文件。
修改輸出的動態庫的命名規則:
#修改前
#SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
#LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
#SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
#SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
#修改後
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
複製代碼
從新編譯,生成動態庫: