记录在windows 上编译ffmpeg

使用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)