終於進入正題了。前提條件是你須要有ndk。我這邊下載的是r11b的版本。其餘的版本也不會出問題。可是爲何不用最新的呢?html
在Linux/Mac下,開始x264的編譯工做。linux
首先從官網上下載最新的x264源碼:http://www.videolan.org/developers/x264.html。這裏貼一下git的地址:android
# git clone http://git.videolan.org/git/x264.git
下載完成以後,就能夠開始編譯了。這裏我就先沒有去了解怎麼使用,由於目前還不須要使用它,編譯出來纔是第一步。git
關於如何用NDK編譯x264,網上有不少這樣的代碼。我是怎麼作的呢:在github上搜索X264,而後進去看看有沒有編譯的相關腳本。通常運氣不會太差,前幾頁就會有。github
這裏我貼一下個人腳本。雖然對cpu的支持還不是很全,可是能編譯運行了。至於對CPU的支持,之後等總體跑通了,再去作支持。(之後去作,也許就不會去作了。。TODO一下吧!)bash
在x264的源碼根目錄下建一個build_android.sh文件,而後寫入如下編譯代碼ide
#!/bin/bash #這裏須要配置一下你的NDK的根目錄。 ANDROID_NDK=$NDK_HOME if [ -z "$ANDROID_NDK" ]; then echo "You must define ANDROID_NDK before starting." echo "They must point to your NDK directories.\n" exit 1 fi # Detect OS OS=`uname` HOST_ARCH=`uname -m` export CCACHE=; type ccache >/dev/null 2>&1 && export CCACHE=ccache if [ $OS == 'Linux' ]; then export HOST_SYSTEM=linux-$HOST_ARCH elif [ $OS == 'Darwin' ]; then export HOST_SYSTEM=darwin-$HOST_ARCH fi SOURCE=`pwd` #這裏配置最終生成。a的目錄 PREFIX=$SOURCE/build/android/arm/ #目標編譯版本 SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm #arm-linux-androideabi-4.9 這個數字可能須要變化。不一樣的NDK版本版本號不一致。 #目標編譯版本和toolchains下的目錄有對應關係。arch-arm對應arm-linux或aarch64。arch-mips對應mipsel-linux或米皮sel-linux。x86一樣。 CROSS_PREFIX=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$HOST_SYSTEM/bin/arm-linux-androideabi- EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__" EXTRA_LDFLAGS="-nostdlib" ./configure --prefix=$PREFIX \ --cross-prefix=$CROSS_PREFIX \ --extra-cflags="$EXTRA_CFLAGS" \ --extra-ldflags="$EXTRA_LDFLAGS" \ --enable-pic \ --enable-static \ --enable-strip \ --disable-cli \ --host=arm-linux \ --disable-asm \ --sysroot=$SYSROOT make clean make STRIP= -j4 install || exit 1
而後賦予build_android.sh執行權限。根目錄下運行:ui
# ./build_android.sh
應該不會出錯(若是有錯,歡迎在文章下面評論,我會盡可能幫助完善)。idea
編譯完成以後,在源碼的目錄中,多了一個build目錄。這個目錄裏面就是咱們想要的頭文件和靜態庫。兩個頭文件,和一個.a的靜態庫code
include |______x264_config.h |______x264.h lib |______libx264.a
有了這幾個文件,就能夠開始安卓的採集工做了。
順帶提一句:x264裏面有個example.c,這個文件裏面是使用的示例代碼。這也是我後面編譯X264的主要參考文件。