[直播一攬子]x264 for Android 的編譯

終於進入正題了。前提條件是你須要有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的主要參考文件。

相關文章
相關標籤/搜索