x264编译脚本
#!/bin/sh
DEST=install
SDK_VERSION="9.3"
#Archs
ARCHS="armv7 armv7s arm64"
DEVPATH=/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDK_VERSION}.sdk
#DEVPATH=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDK_VERSION}.sdk
#Clone x264
#git clone git://git.videolan.org/x264.git x264
cd x264
export CC=`xcodebuild -find clang`
for ARCH in $ARCHS; do
echo "Building $ARCH ......"
./configure \
--host=arm-apple-darwin \
--sysroot=$DEVPATH \
--prefix=$DEST/$ARCH \
--extra-cflags="-arch ${ARCH} -mios-version-min=6.0 -fembed-bitcode" \
--extra-ldflags="-L$DEVPATH/usr/lib/system -arch ${ARCH}" \
--enable-pic \
--enable-static \
--disable-asm
make -j32 && make install && make clean
echo "Installed: $DEST/$ARCH"
done
echo "Combining library ......"
BUILD_LIBS="libx264.a"
OUTPUT_DIR="iPhoneOS"
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!"
修改SDK的路径和SDK的版本, 然后编译, 因为我已经手动下载了x264, 所以就把git clone git://git.videolan.org/x264.git x264这句注释掉
保存这位build_x264.sh, cd到build_x264.sh目录下, 然后执行./build_x264.sh, 如果没有权限, 先执行chmod 777 ./build_x264.sh
最后生成的x264库在x264目录/install/iPhoneOS里
x264库下载链接
ffmpeg编译脚本
SDKVERSION="9.3"
X264_LIB=$(pwd)/../x264-lib-iOS
ARCHS="armv7 armv7s arm64"
#ARCHS="armv7s arm64"
DEVELOPER=`xcode-select -print-path`
CWD=`pwd`
for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
PLATFORM="iPhoneOS"
fi
CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
BUILD_TOOLS="${DEVELOPER}"
echo "compile ${ARCH}..."
CFLAGS="-fembed-bitcode -arch ${ARCH} -I$X264_LIB/include"
LDFLAGS="-arch ${ARCH} -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDKVERSION}.sdk -L$X264_LIB/lib -lpthread -lx264"
echo $X264_LIB
echo $CFLAGS
echo $LDFLAGS
./configure \
--prefix=build/${ARCH} \
--cc="/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" \
--as='gas-preprocessor.pl /Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang' \
--sysroot=${CROSS_TOP}/SDKs/${CROSS_SDK} \
--target-os=darwin \
--arch=arm \
--extra-cflags="$CFLAGS" \
--extra-ldflags="$LDFLAGS" \
--extra-cxxflags=-fembed-bitcode \
--enable-pic \
--enable-cross-compile \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-doc \
--enable-nonfree \
--disable-shared --enable-static --disable-debug --enable-pthreads --disable-stripping \
--disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver \
--enable-network --enable-postproc \
--enable-protocol=http --enable-protocol=tcp --enable-protocol=udp --enable-protocol=rtp \
--enable-protocol=http --enable-protocol=rtmp --enable-protocol=file \
--enable-muxer=rtsp --enable-muxer=rtp \
--enable-demuxer=rtp --enable-demuxer=sdp --enable-demuxer=rtsp \
--disable-encoders --enable-encoder=libx264 --enable-encoder=mjpeg --enable-encoder=aac \
--enable-libx264 \
--enable-decoder=h264 --enable-demuxer=h264 --enable-parser=h264 --enable-decoder=aac --enable-decoder=aac_latm \
--disable-filters \
--disable-symver \
--disable-doc --enable-neon \
--disable-asm --disable-inline-asm \
--enable-avresample \
make clean
make -j32 && make install
done
mkdir ${CWD}/build/iPhoneOS
echo "Build library..."
LIBS_A=("libavcodec.a" "libavdevice.a" "libavfilter.a" "libavformat.a" "libavutil.a" "libpostproc.a" "libswresample.a" "libswscale.a" "libavresample.a")
mkdir ./build/iPhoneOS/lib/
for lib_a in ${LIBS_A[*]}
do
args=""
for ARCH in ${ARCHS}
do
args=${args}" "./build/${ARCH}/lib/${lib_a}
done
args=${args}" -output "./build/iPhoneOS/lib/${lib_a}
echo ${args}
lipo -create ${args}
cp -rvf ./build/arm64/include ./build/iPhoneOS/include
done
echo "Done."
X264_LIB 是前面编译的x264库的路径
这边ffmpeg使用的版本是2.6, 保存, 然后执行…
最后生成的库文件在build/iPhoneOS里