Qt+ffmpeg环境搭建

ops/2024/10/20 15:54:15/

qtffmpeg环境搭建">Qt+ffmpeg环境搭建

各平台常见视频开发库举例:

  • iOS:AVFoundation AudioUnit
  • Android:MediaPlayer,MediaCodec
  • Windows:DirectShow
  • Linux:GStreamer

ffmpeg-库是一个跨平台的视频开发库-还有-libvlc-也是一个跨平台的视频开发库">FFmpeg 库是一个跨平台的视频开发库, 还有 libVLC 也是一个跨平台的视频开发库

  • 掌握了其中一个库, 也能很快上手其它库, 因为音视频解码的原理类似

ffmpeg-库有两种方式">引入 FFmpeg 库有两种方式

一种是直接引入源码进行开发(因为源码庞大,编译较慢,不推荐新手学习时用这种方法)
一种是引入头文件和动态库进行开发,下载地址是:

https://ffmpeg.org/download.html
https://github.com/GyanD/codexffmpeg/releases //下载其它版本可以在这里下载, 已知5.1.2版本可兼容win7

shared版本是有动态库的版本(essentials是必要组件版本,东西可能不全;full是完整版本),gpl和lgpl是开源协议版本不同。
这里我采用的shared版本。

qt">安装Qt

我选择的是5.12版,因为该版本可以直接在网上下载到完整安装包。
编译器选择的是MinGW

ffmpeg-库加载到qt项目当中">将 FFmpeg 库加载到Qt项目当中

  • 在环境变量中添加动态库文件所在路径(例如):
D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared\bin
  • 在Qt文件中添加库文件
win32: {FFMPEG_HOME=D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared# 设置 ffmpeg 头文件路径INCLUDEPATH += $$FFMPEG_HOME/include# 加载 ffmpeg 导入库# -L :指定导入库的目录# -l :指定要导入的 库名称LIBS +=  -L$$FFMPEG_HOME/lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswresample \-lswscale
}

ffmpeg-库版本">测试FFMpeg 库版本

extern "C" {
#include <libavcodec/avcodec.h>
}qDebug() << "test: FFMpeg Version: "<< av_version_info();
//加入上述代码,如可以正常打印ffmpeg版本,则说明ffmpeg库正常。如下,运行时会在调试窗口打印如下信息:
//test: FFMpeg Version:  6.1.1-full_build-www.gyan.dev

至此,Qt+FFmpeg环境即完成了。


http://www.ppmy.cn/ops/98103.html

相关文章

P9145 [THUPC 2023 初赛] 世界杯

[题目通道]([THUPC 2023 初赛] 世界杯 - 洛谷) 简要题意&#xff1a;输出五常中的最强球队。 众所周知&#xff0c;每个国家的球队都有自己的长处&#xff0c;在不同规则下最强球队也有所不同。而小 M 制定的规则是输球场数最少&#xff0c;这是有道理的&#xff0c;因为输球…

「Python程序设计」基础语法:程序的注释、行与缩进

在我们编写程序代码的过程中&#xff0c;加入程序的注释&#xff0c;是一个很重要的过程。特别是对于软件工程来说&#xff0c;加入程序的注释&#xff0c;可以提高程序代码的可读性&#xff0c;让程序的维护难度降低。 程序注释的种类 首先要知道的是&#xff0c;程序的注释…

集合及数据结构第八节(下)———— 队列(Queue)、队列的模拟实现和练习

系列文章目录 集合及数据结构第八节&#xff08;下&#xff09;———— 队列(Queue)、队列的模拟实现和练习 队列(Queue)、队列的模拟实现和练习 队列的概念队列的使用队列模拟实现循环队列双端队列练习题 文章目录 系列文章目录集合及数据结构第八节&#xff08;下&#x…

Qt开发绘画板

在Qt中&#xff0c;你可以使用QPainter类来创建一个简单的绘画板。以下是一个基本的示例&#xff1a; 首先&#xff0c;你需要在你的项目中包含QPainter和QPaintEvent头文件: cpp #include <QPainter> #include <QPaintEvent> 然后&#xff0c;你可以在你的窗口或…

Spring MVC域对象共享数据

在Spring MVC中&#xff0c;域对象&#xff08;Domain Object&#xff09;通常指的是与业务逻辑相关的模型对象&#xff0c;它们代表了应用程序中的核心数据结构。例如&#xff0c;在一个电商应用中&#xff0c;Product、User、Order等类可以被视为域对象。这些对象通常与数据库…

学习记录——day35 数据库 sqlite3

目录 一、安装sqlite3数据库以及sqlite3函数库 二、数据库的结构 三、常用数据库类型 1、sqlite3 2、mysql 四、sqlite3数据库的使用 1、打开数据库 2、sqlite3数据库中指令的使用 1&#xff09;界面指令 2&#xff09;操作指令 3&#xff09;大小写敏感性 3、创建表…

网络协议(概念版)

通讯&#xff1a;首先要得知对方的IP地址。 最终是根据MAC地址&#xff08;网卡地址&#xff09;&#xff0c;输送数据到网卡&#xff0c;被网卡接收。 如果网卡发现数据的目标MAC地址是自己&#xff0c;就会将数据传递给上一层进行处理;如果目标MAC地址不是自己&#xff0c;…

项目问题 | CentOS 7停止维护导致yum失效的解决办法

目录 centos停止维护意味着yum相关源伴随失效。 报错&#xff1a; 解决方案&#xff1a;将图中四个文件替换掉/etc/yum.repos.d/目录下同名文件 资源提交在博客头部&#xff0c;博客结尾也提供文件源码内容 CentOS-Base.repo CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.rep…