今年做了一些音視頻編解碼工作,此前做圖形、圖像類工作多一些,做了音視頻編解碼才知道,這項工作還是很有趣、很神奇的。比如采集幾十M的視頻數據,經過編碼存儲後,文件體積僅僅有幾十K大小,這當中就需要x264來發揮神奇了。下面將手機端ios及android兩個平台下x264編譯腳本分享出來,希望對正在做相關工作的同學有幫助。x264源碼地址:http://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