美文网首页
记录在windows 上编译ffmpeg

记录在windows 上编译ffmpeg

作者: daiyuesai | 来源:发表于2019-03-10 21:20 被阅读0次

    使用msys2编译 ffmpeg.

    第一步下载安装 msys2 :msys2 下载地址:https://sourceforge.net/projects/msys2/

    安装完成后打开Mingw-w64,输入命令:pacman -Syu 进行更新

    执行完成后会报如下警告,按ctrl + c 退出即可

    然后执行:pacman -S yasm 和 pacman -S make 安装对应的包

    第二步下载NDK,ndk下载地址:https://developer.android.google.cn/ndk/downloads/

    第三步下载 ffmpeg, 我下载的是 ffmpeg-4.0.3(不同的版本编译可能会不成功) 

    ffmpeg下载地址:http://www.ffmpeg.org/download.html  。

    第四步:在ffmpeg里新建一个shell脚本 ,build_android.sh

    build_android.sh 内容:

    #!/bin/bash
    export TMPDIR=$(pwd)/temp
    NDK=C:/android/sdk/ndk-bundle
    SYSROOT=$NDK/platforms/android-18/arch-arm
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
    CPU=arm
    PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-Os -fpic -marm"
    function build_one
    {
    ./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --enable-asm \
    --enable-neon \
    --disable-doc \
    --enable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-symver \
    --enable-pthreads \
    --enable-small \
    --enable-jni \
    --enable-mediacodec \
    --enable-runtime-cpudetect \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=android \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="$ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    }
    build_one 

    --enable-cross-compile  打开交叉编译。

    –cross-prefix=PREFIX 设定交叉编译工具链的前缀,不算gcc/nm/as命令

    --arch=arm  目标架构

    --prefix=$PREFIX  生成文件保存路径 

    --enable-shared  生成动态库

    --disable-static  禁止生成静态库

    更多的configure选项说明: https://blog.csdn.net/fengsh998/article/details/79443503  可以参考这篇文章

    然后到 ffmpeg 更目录下执行命令  : ./build_android.sh  就已经开始编译了。

    等待编译完成就会在ffmpeg 目录下多一个 android 目录,

    能找到这几个so 文件就已经编译成功

    下面说一下遇到的坑: 

    1.NDK路径填错,直接复制目录,"\" 没有改成 "/",

    2. 下载的NDK,没有 include 包 

    3. 报xxx命令找不到,编译需要的包没有安装完全。要是不知道是那个包没有装 ,试下这个命令:pacman -S base-devel  。

    相关文章

      网友评论

          本文标题:记录在windows 上编译ffmpeg

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