ios及android兩個平臺下x264編譯腳本 – iPhone手機開發技術文章 iPhone軟體開發教學課程

今年做瞭一些音視頻編解碼工作,此前做圖形、圖像類工作多一些,做瞭音視頻編解碼才知道,這項工作還是很有趣、很神奇的。比如采集幾十M的視頻數據,經過編碼存儲後,文件體積僅僅有幾十K大小,這當中就需要x264來發揮神奇瞭。下面將手機端ios及android兩個平臺下x264編譯腳本分享出來,希望對正在做相關工作的同學有幫助。x264源碼地址:https://www.videolan.org/developers/x264.html 1. ios平臺下x264編譯。這個編譯腳本修改自:https://github.com/xlking/build_x264,有時侯真覺得github真是萬能的,上面好東西太多瞭。這個編譯腳本功能比較豐富,會同時編譯模擬器和真機兩個靜態庫,最後還會將兩個庫合為一個靜態庫,我在實際應用中發現,x264在視頻編碼過程中有些模塊需要硬件指令支持,而模擬器是不提供這種硬件指令的,所以用模擬器調試視頻編碼程序時,均以程序崩潰告終,建議統一用真機調試,可以省很多時間,少走很多彎路。另外要說的是這個編譯腳本可選參數很多,現在ios8已經出來瞭,我當時編譯時還是ios7.1呢,所以腳本中sdk_version選項,可以酌情修改。腳本內容如下:

#!/bin/sh

cd x264

DEST=install
SDK_VERSION=7.1

echo Building armv7

ARM=armv7
export CC=`xcodebuild -find clang`
DEVPATH=/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDK_VERSION}.sdk

./configure                     
    --host=arm-apple-darwin     
    --sysroot=$DEVPATH          
    --prefix=$DEST/$ARM         
    --extra-cflags=-arch $ARM 
    --extra-ldflags=-L$DEVPATH/usr/lib/system -arch $ARM 
    --enable-pic      
    --enable-static   
    --enable-asm

    make && make install && make clean

echo Installed: $DEST/$ARM


echo Building i386

SIM=i386
CC=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc
DEVPATH=/Applications/XCode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk

./configure                     
    --host=i386-apple-darwin    
     -sysroot=$DEVPATH          
    --prefix=$DEST/$SIM         
    --extra-cflags=-arch $SIM 
    --extra-ldflags=-L$DEVPATH/usr/lib/system -arch $SIM 
    --enable-pic    
    --enable-static 
    --disable-asm

    make && make install && make clean

echo Installed: $DEST/$SIM


echo Combining library ......
BUILD_LIBS=libx264.a
OUTPUT_DIR=output
ARCHS=armv7 i386

cd install
mkdir $OUTPUT_DIR
mkdir $OUTPUT_DIR/lib
mkdir $OUTPUT_DIR/include


LIPO_CREATE=

for ARCH in $ARCHS; do
    LIPO_CREATE=$LIPO_CREATE $ARCH/lib/$BUILD_LIBS 
done

lipo -create $LIPO_CREATE -output $OUTPUT_DIR/lib/$BUILD_LIBS
cp -f $ARCH/include/*.* $OUTPUT_DIR/include/

echo ************************************************************
lipo -i $OUTPUT_DIR/lib/$BUILD_LIBS
echo ************************************************************

echo OK, merge done!

2. android平臺下x264編譯。除瞭下載x264源碼外,還要搭建ndk開發環境,這個很容易,隻要到官網下載相應平臺的ndk包即可。完成ndk環境搭建,下一步就是執行腳本,編譯x264源碼。首先在x264源碼目錄下新建build_x264.sh腳本文件,將下列內容拷貝進文件並保存。打開終端,cd進入x264目錄,執行./build_x264.sh,按照提示輸入make,然後耐心等待編譯結果。腳本內容如下:

export NDK=/home/mypc/android-ndk-r9d
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
export PLATFORM=$NDK/platforms/android-8/arch-arm
export PREFIX=/home/mypc/x264
./configure --prefix=$PREFIX 
--enable-static 
--enable-pic 
--disable-asm 
--disable-cli 
--host=arm-linux 
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- 
--sysroot=$PLATFORM

發佈留言