• qt学习之旅--MinGW编译FFmpeg(32bit)


    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个压缩包 BinariesDependencies的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,其内容如下:

    1. ./configure \
    2.     --prefix="/usr/local/ffmpeg" \
    3. --enable-shared --disable-static \
    4. --enable-w32threads --disable-debug --disable-everything \
    5. --enable-memalign-hack --enable-gpl --disable-network \
    6. --enable-encoder=bmp,mjpeg,jpeg2000,mpeg4 \
    7. --enable-decoder=h264,hevc,mpeg4,mjpeg,bmp \
    8. --enable-demuxer=h264,hevc,avi,matroska,image2,image_bmp_pipe \
    9. --enable-muxer=h264,hevc,avi,matroska,mp4,mjpeg,image2 \
    10. --enable-parser=h264,hevc,mjpeg,bmp \
    11. --enable-protocol=file \
    12. --enable-filter=scale \
    13. --disable-indevs \
    14. --disable-hwaccels \
    15. --extra-libs=-lmsvcrt

    在模拟终端中

    cd ffmpeg
    ./configure.sh
    make
    make install

    最后在D:\MinGW\msys\1.0\local\ffmpeg目录有编译安装好的最终文件

  • 相关阅读:
    JQ调接口,html页面
    docker安装mariadb数据库
    【华为机试真题 JAVA】事件推送-100
    吉时利静电计宽测量范围
    在前端使用正则对输入form表单的数据进行格式判断
    docker 网络模式 与 ftp 主动模式与被动模式
    建议收藏,PMP应战篇(2)之易混淆知识点
    git提交代码实际操作
    CNN详细讲解
    限时开源,来自大佬汇总的Kafka限量笔记,绝对不会后悔!
  • 原文地址:https://blog.csdn.net/qq_40594137/article/details/125856411