mingw编译ffmpeg

准备

  1. 下载ffmpeg源码,我这里用的是4.3.1版本

安装msys2 - mingw

1. 下载安装msys2
我下载了msys2-x86_64-20210604.exe并安装

2. 安装编译ffmpeg需要的工具,打开msys2,在msys2命令行中执行
pacman -S make diffutils yasm pkg-config  

3. 安装mingw
pacman -S mingw-w64-x86_64-toolchain
:: 共有 17 组员在组 mingw-w64-x86_64-toolchain 中:
可以看到,也有gcc.

运行不同的 shell,则执行对应版本的 gcc.

上面是安装64位,下面是32位
pacman -S mingw-w64-i686-gcc
或者
pacman -S mingw-w64-i686-toolchain

安装完成后32位的会装在mingw32目录下,64位的会装在mingw64目录下,如果是编译32位库则运行mingw32.exe ,同理64位库运行mingw64.exe,这两个都会弹出命令行界面在里面执行对应命令即可。

因为我是用在qt中,然后qt中用的mingw版本是8.1,msys装的版本比8.1高不兼容,所以需要安装相同的版本

  1. 打开https://sourceforge.net/projects/mingw-w64/files/mingw-w64/,下载指定32位版本

294

这里我们下载i686-win32-dwarf版本即32位版本替换掉msys2中的mingw32,这是我们运行mingw32.exe查看版本。

295

编译ffmpeg

编译32位库,则在mingw32.exe中打开

# 配置
# ./configure  --enable-shared --prefix=./output_lib --enable-gpl --enable-libx264 --enable-libx265
# 因为我只需要264 265解码所以不需要添加libx264 和 libx265
./configure  --enable-shared --prefix=./output_lib 
 
# 编译
make -j12  #我这里是12核的CPU,所以用-j12,如果是双核的则-j2,八核的则-j8

# 安装
make install

常见问题

** ‘WEOF’** undeclared (first use in this function); did you mean ‘EOF’?

解决办法: WEOF在头文件wchar.h中,在strsafe.h添加#include <wchar.h>即可。
但是这种办法并不好,出现WEOF的原因应该是原有的下载地址导致某些库没有下载成功。所以需要把下载地址改为国内的镜像
更新:

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×