zoukankan      html  css  js  c++  java
  • FFmpeg制作+x264+faac

    https://blog.csdn.net/leixiaohua1020/article/details/47071547  雷神的博客

    https://www.jianshu.com/p/3f0237027e27 编译x264

    (找不到C编译器,需要重新安装Xcode命令行工具xcode-select --install)

    http://www.audiocoding.com/faac.html  faac下载地址

    (Unknown option "--enable-libfaac" 新版本3.2被移出了)

    https://www.videolan.org/developers/x264.html x264下载地址

    https://github.com/kewlbear/x264-ios 编译x264命令地址

    #!/bin/sh
    
    CONFIGURE_FLAGS="--enable-static --enable-pic --disable-cli"
    
    ARCHS="arm64 armv7 armv7s x86_64 i386"
    
    # directories
    # 源码保存地址 SOURCE
    ="x264"

    # 目标文件夹 FAT="x264-iOS" SCRATCH="scratch-x264" # must be an absolute path THIN=`pwd`/"thin-x264" COMPILE="y" LIPO="y" if [ "$*" ] then if [ "$*" = "lipo" ] then # skip compile COMPILE= else ARCHS="$*" if [ $# -eq 1 ] then # skip lipo LIPO= fi fi fi if [ "$COMPILE" ] then CWD=`pwd` for ARCH in $ARCHS do echo "building $ARCH..." mkdir -p "$SCRATCH/$ARCH" cd "$SCRATCH/$ARCH" CFLAGS="-arch $ARCH" ASFLAGS= if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ] then PLATFORM="iPhoneSimulator" CPU= if [ "$ARCH" = "x86_64" ] then CFLAGS="$CFLAGS -mios-simulator-version-min=7.0" HOST= else CFLAGS="$CFLAGS -mios-simulator-version-min=5.0" HOST="--host=i386-apple-darwin" fi else PLATFORM="iPhoneOS" if [ $ARCH = "arm64" ] then HOST="--host=aarch64-apple-darwin" XARCH="-arch aarch64" else HOST="--host=arm-apple-darwin" XARCH="-arch arm" fi CFLAGS="$CFLAGS -fembed-bitcode -mios-version-min=7.0" ASFLAGS="$CFLAGS" fi XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` CC="xcrun -sdk $XCRUN_SDK clang" if [ $PLATFORM = "iPhoneOS" ] then export AS="$CWD/$SOURCE/tools/gas-preprocessor.pl $XARCH -- $CC" else export -n AS fi CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS" CC=$CC $CWD/$SOURCE/configure $CONFIGURE_FLAGS $HOST --extra-cflags="$CFLAGS" --extra-asflags="$ASFLAGS" --extra-ldflags="$LDFLAGS" --prefix="$THIN/$ARCH" || exit 1 make -j3 install || 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 lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB done cd $CWD cp -rf $THIN/$1/include $FAT fi

    https://blog.csdn.net/youxiteehuu/article/details/50952338 遇到nasm版本太低需要更新否则无法编译模拟器版本

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
    
    
    brew install nasm

    编译faac

    #!/bin/sh
    cd ./faac
    make distclean
    cd ..
    
    CONFIGURE_FLAGS="--enable-static --with-pic"
    
    ARCHS="arm64 armv7s x86_64 i386 armv7"
    
    # directories
    SOURCE="faac"
    FAT="fat-faac"
    
    SCRATCH="scratch-faac"
    # must be an absolute path
    THIN=`pwd`/"thin-faac"
    
    COMPILE="y"
    LIPO="y"
    
    if [ "$*" ]
    then
    if [ "$*" = "lipo" ]
    then
    # skip compile
    COMPILE=
    else
    ARCHS="$*"
    if [ $# -eq 1 ]
    then
    # skip lipo
    LIPO=
    fi
    fi
    fi
    
    if [ "$COMPILE" ]
    then
    CWD=`pwd`
    for ARCH in $ARCHS
    do
    echo "building $ARCH..."
    mkdir -p "$SCRATCH/$ARCH"
    cd "$SCRATCH/$ARCH"
    
    if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
    then
    PLATFORM="iPhoneSimulator"
    CPU=
    if [ "$ARCH" = "x86_64" ]
    then
    SIMULATOR="-mios-simulator-version-min=7.0"
    HOST=
    else
    SIMULATOR="-mios-simulator-version-min=5.0"
    HOST="--host=i386-apple-darwin"
    fi
    else
    PLATFORM="iPhoneOS"
    if [ $ARCH = "armv7s" ]
    then
    CPU="--cpu=swift"
    else
    CPU=
    fi
    SIMULATOR=
    HOST="--host=arm-apple-darwin"
    fi
    
    XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
    CC="xcrun -sdk $XCRUN_SDK clang -Wno-error=unused-command-line-argument-hard-error-in-future"
    AS="/usr/local/bin/gas-preprocessor.pl $CC"
    CFLAGS="-arch $ARCH $SIMULATOR"
    CXXFLAGS="$CFLAGS"
    LDFLAGS="$CFLAGS"
    
    CC=$CC CFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS CPPFLAGS=$CXXFLAGS CXX=$CC CXXFLAGS=$CXXFLAGS  $CWD/$SOURCE/configure 
    $CONFIGURE_FLAGS 
    $HOST 
    --prefix="$THIN/$ARCH" 
    --disable-shared 
    --without-mp4v2
    
    make clean && make && make install-strip
    cd $CWD
    done
    fi
    
    #================ fat lib ===================
    
    echo "building fat binaries..."
    mkdir -p $FAT/lib
    set - $ARCHS
    CWD=`pwd`
    cd $THIN/$1/lib
    for LIB in *.a
    do
    cd $CWD
    lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB
    done
    
    cd $CWD
    cp -rf $THIN/$1/include $FAT

    https://github.com/kewlbear/FFmpeg-iOS-build-script/blob/master/build-ffmpeg.sh (十分漫长的等待)

    #!/bin/sh
    
    # directories
    
    SOURCE="ffmpeg"
    FAT="FFmpeg-iOS"
    
    SCRATCH="scratch"
    # must be an absolute path
    THIN=`pwd`/"thin"
    
    # absolute path to x264 library
    X264=`pwd`/x264-iOS
    
    # FDK_AAC=`pwd`/faac-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 --enable-nonfree"
    CONFIGURE_FLAGS="$CONFIGURE_FLAGS --extra-libs=-lfaac --enable-nonfree"
    
    fi
    
    # avresample
    #CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"
    
    ARCHS="arm64 armv7 armv7s x86_64 i386"
    
    COMPILE="y"
    LIPO="y"
    
    DEPLOYMENT_TARGET="8.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.githubusercontent.com/Homebrew/install/master/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 -fembed-bitcode"
    if [ "$ARCH" = "arm64" ]
    then
    EXPORT="GASPP_FIX_XCODE5=1"
    fi
    fi
    
    XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
    CC="xcrun -sdk $XCRUN_SDK clang"
    
    # force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3)
    if [ "$ARCH" = "arm64" ]
    then
    AS="gas-preprocessor.pl -arch aarch64 -- $CC"
    else
    AS="gas-preprocessor.pl -- $CC"
    fi
    
    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" 
    --as="$AS" 
    $CONFIGURE_FLAGS 
    --extra-cflags="$CFLAGS" 
    --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
  • 相关阅读:
    简单的评价星星
    存储过程的调用
    连接Oracle的帮助类
    Oracle基础知识笔记
    myBatis自动生成mapping,dao和model
    Spring +SpringMVC 实现文件上传功能。。。
    嵌入式发展
    The Onion Router洋葱路由器
    NFC芯片
    中国计算机学会推荐国际学术刊物 (网络与信息安全)
  • 原文地址:https://www.cnblogs.com/yuxiaoyiyou/p/9445722.html
Copyright © 2011-2022 走看看