本来想说FFmpeg使用现成的动态库,结果发现FFmpeg已经没有32位的了,然而我的QT使用的还是MinGW32位的,没办法,只能自己编译生成32位动态库。
参考博客:ffmpeg 2.6.3在Windows系统MinGW的编译 - 腾讯云开发者社区-腾讯云
Windows 10下基于MinGW编译FFMpeg with x264_cyjeen的博客-CSDN博客
1)、到http://www.mingw.org/ ( 实际下载地址为https://sourceforge.net/projects/mingw/files/ )
下载最新版本的安装包:mingw-get-setup.exe。
2)、双击mingw-get-setup.exe,选择“Install”,默认安装到C盘,可以选择安装在D盘。本文的安装目录为D:\MinGW\
3)、点击“Continue”,将会下载必要的组件(配置文件等)。完成后,再点击“Continue”,进入到“MinGW Installation Manager”界面,这里就是程序的安装(如gcc编译器)。
3.1)、Basic Setup中选择“mingw32-base”、“mingw32-gcc-g++”、“msys-base”(右键选择“mark for installation”)
3.2)、All Packages中选择:mingw32-autoconf(bin那一项,下同)、mingw32-automake、mingw32-autotools、mingw32-pkginfo。
3.3)、选择Installation->Apply Changes,选择“Apply”,将下载选择的安装包(连网下载,所需时间根据实际选择包而定)。并安装一个“Linux环境”。结束后,直接关闭对话框即可。
4)、将目录D:\MinGW\bin以及目录D:\MinGW\msys\1.0\bin加入到系统环境变量(计算机->属性->高级系统设置->高级->环境变量->PATH->编辑,在“变量值”最后添加目录,确定)。
说明:这样做是为了在MinGW命令行中使用gcc等很多程序。
做此设置后,可以将下面提及到的依赖工具及库放到D:\MinGW\bin,也可以放到D:\MinGW\msys\1.0\bin,放到哪个目录都是一样的效果。
5)、进入D:\MinGW\msys\1.0,双击msys.bat即可进行,mingw命令行,输入gcc -v即可查看gcc版本。
下载页面为: 点击下载
我的下载文件为yasm-1.3.0-win32.exe,然后改名为yasm.exe 放入到D:\MinGW\bin中即可。
说明:Yasm是一个完全重写的NASM汇编。它支持x86和AMD64指令集。接受NASM和GNU汇编器(gas)语法,产出二进制。
下载页面为:点击下载
其默认安装路径为C:\Users\<用户>\AppData\Local\bin\NASM,然后把该目录加入到windows的PATH环境变量中
说明:NASM是一个汇编器的名称,全称是Netwide Assembler,支持x86与x64架构的CPU(注意不支持ARM架构)。
我们知道,在x86和x64架构上有多个操作系统,比较流行的操作系统包括:Linux 、Mac OSX、Windows。软件要在某个操作系统上面运行,就需要进行相应的适配。NSAM编译器也是一套软件,它可以支持上面列举的三大流行操作系统,可移植性很高。
地址:http://gnuwin32.sourceforge.net/packages/coreutils.htm 要下载2个压缩包 Binaries和 Dependencies的zip包,解压,将Binaries的bin目录的pr.exe放到 D:\MinGW\bin,将Dependencies目录bin的libintl3.dll、libiconv2.dll也放到刚才的目录。
然后到该目录下,将上述的2个dll复制并分别改名为iconv.dll、intl.dll。——因为pkg-config.exe需要使用到。 (若没有pr.exe,编译会提示:./configure: line 407: pr: command not found
)
下载页面为:点击下载
解压后复制bin文件夹中的pkg-config.exe文件到D:\MinGW\bin\文件夹下
说明:用来返回已安装库的基本信息。它能根据软件安装时软件的.pc配置文件路径找到相应的头文件路径和库文件路径
1)、下载地址:http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/2.26/glib_2.26.1-1_win32.zip 2)、将压缩包bin目录所有的.dll,放到D:\MinGW\bin 目录下。 3)、依赖库iconv.dll、intl.dll在上面的步骤中已经放到D:\MinGW\bin 目录下。如果忘记,请回头看看。
下载页面为:点击下载
解压后复制bin文件夹中的libglib-2.0-0.dll文件到D:\MinGW\bin\文件夹下
执行D:\MinGW\msys\1.0\msys.bat打开模拟终端(如果已打开请关闭重新打开)
下载ffmpeg,当前以下载4.3版本为例,点击下载
下载完后解压到D:\MinGW\msys\1.0\home\<用户>\目录下
填坑:用编辑器打开该文件D:\MinGW\msys\1.0\home\<用户>\ffmpeg-4.3\libavformat\os_support.h,在文件头部添加这一行,不然编译的时候会出错:#include "winerror.h"
在C:\MinGW\msys\1.0\home\<用户>\ffmpeg-4.3\下创建一个脚本文件configure.sh,其内容如下:
- ./configure \
- --prefix="/usr/local/ffmpeg" \
- --enable-shared --disable-static \
- --enable-w32threads --disable-debug --disable-everything \
- --enable-memalign-hack --enable-gpl --disable-network \
- --enable-encoder=bmp,mjpeg,jpeg2000,mpeg4 \
- --enable-decoder=h264,hevc,mpeg4,mjpeg,bmp \
- --enable-demuxer=h264,hevc,avi,matroska,image2,image_bmp_pipe \
- --enable-muxer=h264,hevc,avi,matroska,mp4,mjpeg,image2 \
- --enable-parser=h264,hevc,mjpeg,bmp \
- --enable-protocol=file \
- --enable-filter=scale \
- --disable-indevs \
- --disable-hwaccels \
- --extra-libs=-lmsvcrt
在模拟终端中
cd ffmpeg
./configure.sh
make
make install
最后在D:\MinGW\msys\1.0\local\ffmpeg目录有编译安装好的最终文件