美文网首页
FFmpeg+xh264+libaac(音频解码) 集成编译

FFmpeg+xh264+libaac(音频解码) 集成编译

作者: 湛卢无方 | 来源:发表于2017-04-24 11:46 被阅读0次

    网上看了许多的微博,关于这个方面的很少,所以想写点傻瓜式的,新手一看就会,还不要那么麻烦。方便研究底层的同学。

    先下载FFmpeg和x264都会用到的脚本

    下载gas-pregprcessor 将文件放到/usr/local/bin的文件夹下

    首先是编译下x264

    1 先去官网下载x264解码器源码 解压 

    2 下载x264执行脚本 

    将脚本 和 源码放在同级目录下

    终端执行 ./build-x264.sh 脚本即可 

    3  编译libaac 参考这个这个大神的微博 执行脚本文件 注意

    4 下载FFmpeg源码

    FFmpeg执行脚本 将编译好的

    #!/bin/sh

    # directories

    SOURCE="ffmpeg-3.2"

    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-build-script-for-iOS/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[ $# -eq1]

    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)"\

    ||exit1

    fi

    echo'Trying to install Yasm...'

    brew install yasm ||exit1

    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) \

    ||exit1

    fi

    if[ ! -r $SOURCE ]

    then

    echo'FFmpeg source not found. Trying to download...'

    curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \

    ||exit1

    fi

    CWD=`pwd`

    forARCHin$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"

    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-ldflags="$LDFLAGS"\

    --prefix="$THIN/$ARCH"\

    ||exit1

    make -j3 install $EXPORT ||exit1

    cd $CWD

    done

    fi

    if["$LIPO"]

    then

    echo"building fat binaries..."

    mkdir -p $FAT/lib

    set - $ARCHS

    CWD=`pwd`

    cd $THIN/$1/lib

    forLIBin*.a

    do

    cd $CWD

    echo lipo -create`find $THIN -name $LIB`-output $FAT/lib/$LIB1>&2

    lipo -create`find $THIN -name $LIB`-output $FAT/lib/$LIB ||exit1

    done

    cd $CWD

    cp -rf $THIN/$1/include $FAT

    fi

    echo Done

    相关文章

      网友评论

          本文标题:FFmpeg+xh264+libaac(音频解码) 集成编译

          本文链接:https://www.haomeiwen.com/subject/yvfwwttx.html