IOS 编译x264和ffmpeg

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库下载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值