https://github.com/kewlbear/FFmpeg-iOS-build-script
| #!/bin/sh | |
| # directories | |
| SOURCE="ffmpeg-2.6.3" | |
| FAT="FFmpeg-iOS" | |
| SCRATCH="scratch" | |
| # must be an absolute path | |
| THIN=`pwd`/"thin" | |
| # absolute path to x264 library | |
| #X264=`pwd`/fat-x264 | |
| #FDK_AAC=`pwd`/fdk-aac/fdk-aac-ios | |
| CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \ | |
| --disable-doc --enable-pic" | |
| if [ "$X264" ] | |
| then | |
| CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264" | |
| fi | |
| if [ "$FDK_AAC" ] | |
| then | |
| CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac" | |
| fi | |
| # avresample | |
| #CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample" | |
| ARCHS="arm64 armv7 x86_64 i386" | |
| COMPILE="y" | |
| LIPO="y" | |
| DEPLOYMENT_TARGET="6.0" | |
| if [ "$*" ] | |
| then | |
| if [ "$*" = "lipo" ] | |
| then | |
| # skip compile | |
| COMPILE= | |
| else | |
| ARCHS="$*" | |
| if [ $# -eq 1 ] | |
| then | |
| # skip lipo | |
| LIPO= | |
| fi | |
| fi | |
| fi | |
| if [ "$COMPILE" ] | |
| then | |
| if [ ! `which yasm` ] | |
| then | |
| echo 'Yasm not found' | |
| if [ ! `which brew` ] | |
| then | |
| echo 'Homebrew not found. Trying to install...' | |
| ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" \ | |
| || exit 1 | |
| fi | |
| echo 'Trying to install Yasm...' | |
| brew install yasm || exit 1 | |
| fi | |
| if [ ! `which gas-preprocessor.pl` ] | |
| then | |
| echo 'gas-preprocessor.pl not found. Trying to install...' | |
| (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \ | |
| -o /usr/local/bin/gas-preprocessor.pl \ | |
| && chmod +x /usr/local/bin/gas-preprocessor.pl) \ | |
| || exit 1 | |
| fi | |
| if [ ! -r $SOURCE ] | |
| then | |
| echo 'FFmpeg source not found. Trying to download...' | |
| curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \ | |
| || exit 1 | |
| fi | |
| CWD=`pwd` | |
| for ARCH in $ARCHS | |
| do | |
| echo "building $ARCH..." | |
| mkdir -p "$SCRATCH/$ARCH" | |
| cd "$SCRATCH/$ARCH" | |
| CFLAGS="-arch $ARCH" | |
| if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ] | |
| then | |
| PLATFORM="iPhoneSimulator" | |
| CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET" | |
| else | |
| PLATFORM="iPhoneOS" | |
| CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET" | |
| if [ "$ARCH" = "arm64" ] | |
| then | |
| EXPORT="GASPP_FIX_XCODE5=1" | |
| fi | |
| fi | |
| XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` | |
| CC="xcrun -sdk $XCRUN_SDK clang" | |
| CXXFLAGS="$CFLAGS" | |
| LDFLAGS="$CFLAGS" | |
| if [ "$X264" ] | |
| then | |
| CFLAGS="$CFLAGS -I$X264/include" | |
| LDFLAGS="$LDFLAGS -L$X264/lib" | |
| fi | |
| if [ "$FDK_AAC" ] | |
| then | |
| CFLAGS="$CFLAGS -I$FDK_AAC/include" | |
| LDFLAGS="$LDFLAGS -L$FDK_AAC/lib" | |
| fi | |
| TMPDIR=${TMPDIR/%\/} $CWD/$SOURCE/configure \ | |
| --target-os=darwin \ | |
| --arch=$ARCH \ | |
| --cc="$CC" \ | |
| $CONFIGURE_FLAGS \ | |
| --extra-cflags="$CFLAGS" \ | |
| --extra-cxxflags="$CXXFLAGS" \ | |
| --extra-ldflags="$LDFLAGS" \ | |
| --prefix="$THIN/$ARCH" \ | |
| || exit 1 | |
| make -j3 install $EXPORT || exit 1 | |
| cd $CWD | |
| done | |
| fi | |
| if [ "$LIPO" ] | |
| then | |
| echo "building fat binaries..." | |
| mkdir -p $FAT/lib | |
| set - $ARCHS | |
| CWD=`pwd` | |
| cd $THIN/$1/lib | |
| for LIB in *.a | |
| do | |
| cd $CWD | |
| echo lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2 | |
| lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1 | |
| done | |
| cd $CWD | |
| cp -rf $THIN/$1/include $FAT | |
| fi | |
| echo Done |
本文介绍了一个用于iOS平台的FFmpeg编译脚本,该脚本支持多个架构包括arm64、armv7等,并能根据需求选择是否集成x264和FDK_AAC库。此外,还提供了如何安装依赖工具如yasm和gas-preprocessor.pl的方法。
6454

被折叠的 条评论
为什么被折叠?



