QT Mingw编译ffmpeg源码以及测试

文章目录

  • 前言
  • 下载
    • 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.shmingw32-makemingw32-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.mzph.cn/news/708905.shtml

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

相关文章

LVS+Keepalived高可用群集

一、Keepalived简介 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务&…

MySQL中LOW_PRIORITY含义和用法

LOW_PRIORITY 是 MySQL 中的一个关键字,它用于在执行某些操作时改变这些操作的优先级。具体来说,当你在一个表上执行 INSERT、UPDATE 或 DELETE 操作时,你可以使用 LOW_PRIORITY 来告诉 MySQL 服务器这个操作的优先级较低。这意味着这个操作将…

Vue NextTick工作原理及使用场景

$nextTick的定义及理解: 定义:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。 所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操…

springboot集成quartz定时任务并接入后台管理系统(copy即用)

说明:项目启动后会根据设置的时间进行执行,业务代码根据自己的需求更改,数据库文件在最后(记得清空数据库哦~)这里需要注意的一点就是className字段表示的是下面的对应的DynamicTask的路径如:com.example.demo.quartz.task.DynamicTask,如有多个定时任务copy并更改Dynam…

团结引擎——DotNet Wasm方案

参考:团结引擎 DotNet WebAssembly(Wasm) 介绍 一、当前编译流程 通过IL2CPP将C#转成C/C;通过Emscripen将C/C转成WebAssembly; 二、 当前存在问题 IL2CPP在处理类似泛型、反射结构时,由于缺少运行时信息,必须全量生…

程序员面试技巧分享

目录 前言1 自我介绍的艺术1.1 简明扼要1.2 强调独特之处1.3 项目亮点突显1.4 结合公司文化 2 技术问题回答的技巧2.1 明确问题理解2.2 结构清晰的回答2.3 强调解决问题的方法 3 团队协作经验的展示3.1 共享成功经验:3.2 强调沟通和解决冲突的能力: 结语…

基础!!!吴恩达deeplearning.ai:卷积层

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 回顾——密集层 Dense Layer卷积层 Convolutional Neural Network定义优势具体说明心电图卷积层搭建 到目前为止,你使用的所有神经网络层都是密集层类型,这…

HarmonyOS | 状态管理(六) | LocalStorage(页面级UI状态存储)

系列文章目录 1.HarmonyOS | 状态管理(一) | State装饰器 2.HarmonyOS | 状态管理(二) | Prop装饰器 3.HarmonyOS | 状态管理(三) | Link装饰器 4.HarmonyOS | 状态管理(四) | Provide和Consume装饰器 5.HarmonyOS | 状态管理(五) | Observed装饰器和ObjectLink装饰器 文章目录…

该类型的 CollectionView 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改。

报错原因 在异步的时候,调用了其他异步,导致UI工程线程该变了数据源,所以只需要将线程变为原始的UI线程。 解决方案 await QueuedTask.Run(() > { Application.Current.Dispatcher.Invoke(() >{报错的代码,…

红外测温仪芯片方案开发设计

红外测温仪由光学系统、光电探测器、信号放大器及信号处理、显示输出等部分组成。光学系统汇集其视场内的目标红外辐射能量,视场的大小由测温仪的光学零件以及位置决定。被测物体辐射的红外首先进入测温仪的光学系统,再由光学系统汇聚射入的红外线&#…

【探索AI】十 深度学习如何入门

深度学习概念 深度学习是一种机器学习的方法,通过构建和训练多层神经网络来解决复杂的模式识别和决策任务。以下是与深度学习相关的一些基本概念: 神经网络:神经网络是由大量的人工神经元(节点)组成的计算模型。它们通…

前端程序员如何使用GPT

前端程序员如何使用GPT GPT自述 GPT(Generative Pre-trained Transformer)是一种基于深度学习的自然语言处理模型,它在近年来取得了非常显著的成果。许多前端程序员也开始尝试使用GPT来提升工作效率和创造力。那么,前端程序员如何…

python学习笔记-内置类型

Python内置类型是Python编程语言中自带的基本数据类型,它们用于存储和处理数据。其中包括数字、序列、映射、类、实例和异常等主要类型。 在这些内置类型中,有一些是可变的,它们具有修改自身内容的能力,比如添加、移除或重排成员…

用快代理换Ip爬取boss直聘招聘信息

import requests import random from prettytable import PrettyTable tb PrettyTable() tb.field_names [区域,详情页链接,领导,经营领域,公司名,招聘人数,学历要求,工作经验要求,职位名称,期望薪资,技能要求,福利]headers {"User-Agent":"Mozilla/5.0 (Win…

跳跃游戏Ⅱ

问题 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - …

独立分体式比例阀控制器

比例阀放大器的主要作用是对比例阀进行控制&#xff0c;它产生所需的电信号&#xff0c;并对这些信号进行综合、比较、校正和放大。这样的设备通常包括稳压电源、颤振信号发生器等&#xff0c;以确保比例阀能够准确地响应控制指令。外置模块式的设计使得这种放大器可以方便地与…

windows系统下安装RabbitMQ

一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的操作&#xff0c;选择两者版本时一定要参考版本的兼容性 1.RabbitMQ国内下载地址&#xff0c;因官网下载比较缓慢&#xff0c;还是国内的稍微快些 https://r…

Kubernetes IoTDB系列 | IoTDB数据库同步|IoTDB数据库高可用

目录 一、介绍二、应用场景三、IoTDB 数据库搭建四、修改同步配置文件1、配置接收端的参数2、配置发送端的参数五、启动同步功能发送端六、测试一、介绍 IoTDB 数据库同步是指将一个节点的数据复制到其他节点,以确保数据的冗余和可用性。在分布式环境中,数据同步是保证系统高…

【日常聊聊】程序员的金三银四

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 方向一&#xff1a;面试技巧分享 方向二&#xff1a;面试题解析 方向三&#xff1a;公司文化解读 方向四&#xff1a;职业规…

【Vision Pro 应用】Spatialty Coffee:探索咖啡制作的全新维度

Spatialty Coffee,一个引领咖啡文化潮流的应用程序,为用户提供了一个全新的平台,用以浏览和发现最佳的滤过咖啡配方。这款应用不仅满足了咖啡爱好者对于高品质咖啡的追求,同时也为那些希望提升咖啡制作技巧的人提供了有力的支持。 1.广泛支持的滤过咖啡制作器 Spatialty …