文章目录
- 前言
- 下载
- msys2
- ysam
- FFmpeg
- 搭建编译环境
- 安装msys2
- 安装QT Mingw编译器到msys环境中
- 安装ysam
- 测试
- 编译FFmpeg
前言
FFmpeg不像VLC有支持QT的库文件,它仅提供源码,需要使用者自行编译成对应的库,当使用QT+FFmpeg实现播放视频以及视频流时,需要使用QT自带的Mingw对FFmpeg进行编译,下面我们来介绍如何使用QT Mingw编译FFmpeg源码。
下载
首先需要下载几个工具用于FFmpeg的编译,工具名称以及下载地址如下:
msys2
MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,集成了 shell 命令行开发环境。它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从MinGW-生成)基础上产生的,追求更好的互操作性的 Windows 软件。
MSYS2 [1]是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(其实是与Cygwin的区别)。
下载地址:https://www.msys2.org/ 此地址在国内下载较慢,可以使用下面的链接快速下载:
阿里映像:https://mirrors.aliyun.com/msys2/distrib/x86_64/
我下载的版本是:msys2-x86_64-20240113.exe
ysam
Yasm是一个完全重写的NASM汇编。它支持x86和AMD64指令集。接受NASM和GNU汇编器(gas)语法,产出二进制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。
下载地址:http://www.tortall.net/projects/yasm/releases/
我下载的版本是:yasm-1.3.0-win32.exe
FFmpeg
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
下载地址:http://www.ffmpeg.org/releases/
我下载的版本是:ffmpeg-6.1.1.tar.xz
搭建编译环境
安装msys2
点击下载好的程序,选择安装位置,后面一直点击下一步即可。
我安装的位置是:D:/msys64
安装QT Mingw编译器到msys环境中
将QT中Mingw32编译器复制到msys2安装路径的mingw32文件夹中,下图展示了QT Mingw32编译器位置以及msys2需要拷贝到的位置,相同的可以拷贝QTMingw64的编译器到msys2的mingw64文件夹中。
安装ysam
将下载的yasm-1.3.0-win32.exe文件名称更改为yasm.exe,然后拷贝到msys2的mingw32的安装路径中,具体路径如下:
测试
运行msys2安装路径下的mingw32.exe,路径如下:
双击后在命令行中输入gcc -v,返回出正确的qt中mingw的编译器即可。
编译FFmpeg
拷贝下载好的ffmpeg源码到如下路径,并解压:
源码放置位置:D:\msys64\home\计算机名
在ffmpeg源码文件夹中新建configure.sh,内容如下:
./configure \
--prefix="/usr/local/ffmpeg" \
--enable-shared --disable-static \
--enable-w32threads --disable-debug --disable-everything \
--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
双击 D:\msys64\mingw32.exe,在命令行中使用cd命令打开ffmpeg源代码文件夹,在文件夹路径运行编译指令
cd D:\msys64\home\计算机名xxx\ffmpeg-6.1.1
./configure.sh
mingw32-make
mingw32-make install
运行./configure.sh时会提示找不到pkg-config以及command not found,不用管,继续执行mingw32-make和mingw32-make,编译好的库和头文件会安装到D:\msys64\usr\local\ffmpeg中,拷贝lib和include到QT工程中,拷贝bin中的dll到QT的构建目录中。
如上,QT Mingw编译ffmpeg成功。
参考文章:https://blog.csdn.net/dashuo0501/article/details/128166736