首页 > 代码库 > ios及android两个平台下x264编译脚本

ios及android两个平台下x264编译脚本

       今年做了一些音视频编解码工作,此前做图形、图像类工作多一些,做了音视频编解码才知道,这项工作还是很有趣、很神奇的。比如采集几十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
       有了libx264.a文件,下一步就可以调用相应api做视频编码工作了。当然也可以统一使用ffmpeg做音视频编码,只需在编译ffmpeg时将支持libx264选项打开即可。



ios及android两个平台下x264编译脚本