美文网首页
windows编译ffmpeg

windows编译ffmpeg

作者: 一个小草人 | 来源:发表于2021-04-22 10:49 被阅读0次

    1.下载安装MSYS2软件,用来模拟linux环境,可以在官网https://www.msys2.org/下载
    2.下载NDKr20,解压
    3.下载ffmpeg最新源码,当前最新版本是4.2.2,官网地址http://ffmpeg.org/download.html
    4.解压ffmpeg压缩包到任意目录
    5.替换最终生成的so文件名

    # 将ffmpeg-4.2.2目录中configure 文件中的:
    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' 
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' 
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' 
    SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
    
    #替换为:
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
    SLIB_INSTALL_LINKS='$(SLIBNAME)'
    
    

    6.进入ffmpeg根目录,创建编译脚本build_android.sh
    7.将以下shell代码复制到build_android.sh中

    #!/bin/bash
    #export TMPDIR=D:/msys64/home/Lanxumit/ffmpeg-4.2.2/temp #设置编译中临时文件目录,不然会报错 unable to create temporary file
    
    # NDK的路径,根据实际安装位置设置
    NDK=E:/Sdk/android-ndk-r20b
    
    # 工具链的路径,arm-linux-androideabi-4.9与上面设置的PLATFORM对应,4.9为工具的版本号
    TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/windows-x86_64
    API=29
    
    function build_android
    {
    echo "Compiling FFmpeg for $CPU"
    ./configure \
        --prefix=$PREFIX \
        --disable-neon \
        --disable-hwaccels \
        --disable-gpl \
        --disable-postproc \
        --enable-shared \
        --enable-jni \
        --disable-mediacodec \
        --disable-decoder=h264_mediacodec \
        --disable-static \
        --disable-doc \
        --disable-ffmpeg \
        --disable-ffplay \
        --disable-ffprobe \
        --disable-avdevice \
        --disable-doc \
        --disable-symver \
        --cross-prefix=$CROSS_PREFIX \
        --target-os=android \
        --arch=$ARCH \
        --cpu=$CPU \
        --cc=$CC
        --cxx=$CXX
        --enable-cross-compile \
        --sysroot=$SYSROOT \
        --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \
        --extra-ldflags="$ADDI_LDFLAGS" \
        $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    echo "The Compilation of FFmpeg for $CPU is completed"
    }
    
    #armv8-a
    ARCH=arm64
    CPU=armv8-a
    CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
    PREFIX=$(pwd)/android/$CPU
    OPTIMIZE_CFLAGS="-march=$CPU"
    build_android
    
    #armv7-a
    ARCH=arm
    CPU=armv7-a
    CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
    CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
    PREFIX=$(pwd)/android/$CPU
    OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
    build_android
    
    #x86
    ARCH=x86
    CPU=x86
    CC=$TOOLCHAIN/bin/i686-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/i686-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-
    PREFIX=$(pwd)/android/$CPU
    OPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
    build_android
    
    #x86_64
    ARCH=x86_64
    CPU=x86-64
    CC=$TOOLCHAIN/bin/x86_64-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/x86_64-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-
    PREFIX=$(pwd)/android/$CPU
    OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"
    build_android
    

    6.打开MSYS2编译工具,进入ffmpeg目录
    7.执行sh文件,./build_android.sh开始编译
    8.编译完成查看文件,在/ffmpeg-4.2.2/android/目录下

    相关文章

      网友评论

          本文标题:windows编译ffmpeg

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