当前位置:网站首页>qt学习之旅--MinGW编译FFmpeg(32bit)
qt学习之旅--MinGW编译FFmpeg(32bit)
2022-08-03 05:44:00 【van久】
0、前言
本来想说FFmpeg使用现成的动态库,结果发现FFmpeg已经没有32位的了,然而我的QT使用的还是MinGW32位的,没办法,只能自己编译生成32位动态库。
参考博客:ffmpeg 2.6.3在Windows系统MinGW的编译 - 腾讯云开发者社区-腾讯云
Windows 10下基于MinGW编译FFMpeg with x264_cyjeen的博客-CSDN博客
1、准备环境
1.1、安装MinGW
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版本。
1.2、安装yasm(汇编编译器)
下载页面为: 点击下载
我的下载文件为yasm-1.3.0-win32.exe,然后改名为yasm.exe 放入到D:\MinGW\bin中即可。
说明:Yasm是一个完全重写的NASM汇编。它支持x86和AMD64指令集。接受NASM和GNU汇编器(gas)语法,产出二进制。
1.3、安装nasm(汇编编译器)
下载页面为:点击下载
其默认安装路径为C:\Users\<用户>\AppData\Local\bin\NASM,然后把该目录加入到windows的PATH环境变量中
说明:NASM是一个汇编器的名称,全称是Netwide Assembler,支持x86与x64架构的CPU(注意不支持ARM架构)。
我们知道,在x86和x64架构上有多个操作系统,比较流行的操作系统包括:Linux 、Mac OSX、Windows。软件要在某个操作系统上面运行,就需要进行相应的适配。NSAM编译器也是一套软件,它可以支持上面列举的三大流行操作系统,可移植性很高。
1.4、下载coreutils工具包
地址: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
)
1.5、安装pkg-config
下载页面为:点击下载
解压后复制bin文件夹中的pkg-config.exe文件到D:\MinGW\bin\文件夹下
说明:用来返回已安装库的基本信息。它能根据软件安装时软件的.pc配置文件路径找到相应的头文件路径和库文件路径
1.6、下载pkg-config.exe依赖库
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 目录下。如果忘记,请回头看看。
1.7、安装glib
下载页面为:点击下载
解压后复制bin文件夹中的libglib-2.0-0.dll文件到D:\MinGW\bin\文件夹下
2、编译安装ffmpeg
执行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目录有编译安装好的最终文件
边栏推荐
猜你喜欢
Pinned Articles-
SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)
sql优化常用的几种方法
Example of embedding code for continuous features
torch.nn.modules.activation.ReLU is not a Module subclass
QT信号与槽
RADIUS计费认证如何配置?这篇文章一步一步教你完成
【云原生 · Kubernetes】Kubernetes基础环境搭建
信息学奥赛一本通T1446:素数方阵
MySQL的DATE_FORMAT()函数将Date转为字符串
随机推荐
2021年PHP-Laravel面试题问卷题 答案记录
解决plt.imshow()不显示图片cv2.imshw()不显示图片
el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点
流式低代码编程,拖拽节点画流程图并运行
C语言版本和GCC版本
MySQL的安装教程(嗷嗷详细,包教包会~)
Charles抓包显示<unknown>解决方案
Chrome插件开发入门
SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)
DIFM网络详解及复现
用代码构建UI界面
DIFM network, rounding and repetition
DAC、ADC、FFT使用总结
hashSet解析
el-tabs(标签栏)的入门学习
Nacos下载与安装
我国有关信息方面的法律法规
【云原生 · Kubernetes】Kubernetes简介及基本组件
信息学奥赛一本通T1453:移动玩具
C语言实现通讯录功能(400行代码实现)