QT Mingw编译ffmpeg源码以及测试

news2025/2/24 18:20:45

文章目录

  • 前言
  • 下载
    • 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文件夹中。
QTMingw32编译器位置
msys2 Mingw32位置

安装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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安装

Linux系统安装 安装包链接 链接:https://pan.baidu.com/s/1FdP7TH90UvKUQuiL2yeGCA 提取码:c49n安装包内容 虚拟机执行文件 详细安装教程 虚拟机密钥 Ubuntu 安装步骤 先点击虚拟机的.EXE文件安装,打开安装教程,有详细的说明。

【Acwing】154滑动窗口

#include<bits/stdc.h> using namespace std;int n,k; int nums[1000010] {0};int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin>>n>>k;// 下面求最小值int cnt 0;int res[1000010] {0};deque<int> q; // 双端队列 for(int i0;i&l…

Zoho Bigin斩获PCMag推崇:小企业首选CRM软件

当我们谈论企业怎样选择CRM管理系统时&#xff0c;大型企业、中型企业以及小型或初创等不同规模的企业需求各不相同&#xff0c;很难用一套软件来适配所有公司。以小企业为例&#xff0c;大多面临预算紧张、没有专业的IT部门或支持团队、暂时用不到高级定制功能等现状。基于这个…

R语言提高效率的技巧(2)

1、R project&#xff1a;加载数据和脚本不需要设置文件夹&#xff1b;打包project文件夹后发给别人&#xff0c;在另外一个环境中&#xff0c;点击.Rproj文件即可运行。 2、下载原始R包&#xff0c;进行补充和修改。 https://cran.r-project.org/web/packages/available_pack…

智能分析网关V4电瓶车检测与烟火算法,全面提升小区消防安全水平

2024年2月23日&#xff0c;南京市某小区因电瓶车停放处起火引发火灾事故&#xff0c;造成巨大人员伤亡和损失。根据国家消防救援局的统计&#xff0c;2023年全国共接报电动自行车火灾2.1万起。电瓶车火灾事故频发&#xff0c;这不得不引起我们的重视和思考&#xff0c;尤其是在…

RK3568 android11 调试陀螺仪模块 MPU6500

一&#xff0c;MPU6500功能介绍 1.简介 MPU6500是一款由TDK生产的运动/惯性传感器&#xff0c;属于惯性测量设备&#xff08;IMU&#xff09;的一种。MPU6500集成了3轴加速度计、3轴陀螺仪和一个板载数字运动处理器&#xff08;DMP&#xff09;&#xff0c;能够提供6轴的运动…

Socket网络编程(三)——TCP快速入门

目录 概述TCP连接可靠性1. 三次握手过程2. 四次挥手过程3. 为什么挥手需要四次&#xff1f; 传输可靠性TCP核心APITCP传输初始化配置&建立连接客户端创建Socket建立连接服务端创建ServerSocket监听连接ServerSocket 和 Socket的关系 Socket基本数据类型传输客户端数据传输服…

【MySQL】内置函数 -- 详解

一、日期函数 日期&#xff1a;年月日时间&#xff1a;时分秒 1、获得年月日 2、获得时分秒 3、获得时间戳 4、在日期的基础上加日期 5、在日期的基础上减去时间 6、计算两个日期之间相差多少天 7、获得当前时间 ⚪练习 &#xff08;1&#xff09;记录生日 &#xff08;2&…

反转局部链表+牛客

题目链接 链表内指定区间反转_牛客题霸_牛客网 题目描述 代码实现 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param head ListNode类 * param m int整型 * param n int整型 * retur…

微服务篇之分布式事务

一、Seata架构 Seata事务管理中有三个重要的角色&#xff1a; TC (Transaction Coordinator) - 事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器&#xff1a;定义全局事务的范围、开始全局事务、…

ConvTranspose1d详解

文章目录 ConvTranspose1d简介二、Parameters三、Shape1、Input(batch_size, in_channels, input_length)2、kernel_size(in_channels, out_channels, kernel_size)3、Output(batch_size, out_channels, output_length) 四、Variables ConvTranspose1d简介 class torch.nn.Con…

c++ for 循环语句

循环语句 在C中&#xff0c;有几种循环语句可用于重复执行一段代码&#xff0c;直到满足指定条件为止&#xff0c;主要有 for 循环、while 循环、do-while 循环三种循环语句。三者区别&#xff1a; 循环类型特点for 循环1. 适用于已知循环次数的情况&#xff0c;循环次数事先…

threejs 大场景下,对小模型进行贴图处理

接上篇小模型的删除☞threeJS 大模型中对小模型进行删除-CSDN博客 针对已有模型&#xff0c;根据数据状态进行贴图处理&#xff0c;例如&#xff1a;机房内电脑告警状态、电脑开关机状态下的不同状态贴图等 示例模型还是以丛林小屋为例&#xff1a;针对该模型中的树干进行贴图…

不是苹果放弃电动车,是电动车不需要苹果

苹果弃车 2月28号凌晨&#xff0c;著名外媒爆料&#xff1a;苹果公司放弃投入十多年的造车项目&#xff0c;将其中的大量资源转投至 AI 部门。 如此炸裂的事情&#xff0c;自然少不了世界级网红&#xff0c;特斯拉 CEO 埃隆马斯克的点评&#xff1a; 敬礼香烟&#xff1f; 有点…

搭建LNMP环境并配置个人博客系统

LNMP是Linux&#xff08;操作系统&#xff09;、Nginx&#xff08;Web服务器&#xff09;、MySQL&#xff08;数据库&#xff09;和PHP&#xff08;脚本解释器&#xff09;的组合&#xff0c;常用于部署高性能的动态网站&#xff0c;如WordPress等博客平台 一、安装Linux操作系…

python dictionary 字典

Python 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下 d {key1 : value1, key2 : value2, key3 : value3 }dict 作…

NVIDIA DGX H100概述

NVIDIA DGX H100系统是一种专为AI基础架构和工作负载而设计的专用多功能解决方案&#xff0c;涵盖了从分析和训练到推理的各种应用场景。它包括NVIDIA Base Command™和NVIDIA AI企业软件套件&#xff0c;以及来自NVIDIA DGXperts的专业建议。 DGX H100硬件和组件特性 硬件概…

数据卷dockerfile

目录 一、数据卷 1. 简介 2. 数据卷和数据卷容器 1. 数据卷&#xff1a; 2. 数据卷容器&#xff1a; 二、自定义镜像 1. 作用 2. 自定义centos 3. 自定义tomcat8 一、数据卷 1. 简介 数据卷是一个可供一个或多个容器使用的特殊目录&#xff0c;它将主机操作系统目录直…

TOMCAT的安装与基本信息

目录 引言 一、TOMCAT简介 二、TOMCAT安装 &#xff08;一&#xff09;JDK简介 &#xff08;二&#xff09;安装Oracle JDK 1.rpm安装 2.二进制安装 &#xff08;三&#xff09;安装TOMCAT 三、配置文件介绍及核心组件 &#xff08;一&#xff09;配置文件 1.目录文…

lv19 多态 4

1 虚函数 虚函数&#xff08; 基类指针可指向派生类对象&#xff0c; 动态联编&#xff09; 先看示例&#xff0c;不加virtual&#xff0c;不认对象认指针。 #include <iostream>using namespace std;class A{ public:A(){ }~A(){ }void show(){cout<<"AAA…