您的位置:首页 > 移动开发 > IOS开发

IOS 编译x264和ffmpeg

2016-09-03 11:21 375 查看
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里

ffmpeg库下载链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios ffmpeg 脚本