FFmpeg零基础学习(一)——初步介绍与环境搭建

目录

  • 前言
  • 正文
    • 一、开发环境
    • 二、搭建环境
    • 三、测试代码
    • 四、调用库的介绍
    • End、遇到的问题
      • 2、Qt 在线安装容易报错,断开问题
      • 1、在线安装QMaintainTool很慢
      • 2、Qt5.15 无法调试FFmpeg
  • 参考

前言

FFmpeg是一个开源的跨平台多媒体处理框架,它包含了一组用于处理音频、视频、字幕等多媒体数据的库和工具。FFmpeg提供了强大的功能和灵活性,被广泛用于多媒体应用开发、视频编辑、流媒体传输以及音视频格式转换等领域。
以下是FFmpeg的一些主要特点和功能:
支持广泛的音视频格式:FFmpeg支持解码和编码大量的音视频格式,包括常见的如MP3、AAC、H.264、MPEG等,以及一些较为罕见的格式。
1、高性能和低延迟:FFmpeg经过高度优化,具有出色的性能和低延迟,能够高效地处理多媒体数据。
2、多媒体处理和编辑:FFmpeg提供了丰富的功能和工具,可以进行多媒体数据的剪切、合并、分离、转码、滤镜处理等操作,使开发者可以实现各种复杂的音视频处理需求。
3、流媒体传输:FFmpeg支持实时的音视频流媒体传输,可以将音视频数据推送到流媒体服务器,或者从流媒体服务器接收音视频数据。
4、跨平台支持:FFmpeg可在多个操作系统上运行,包括Windows、Linux、macOS等,使其具有广泛的应用和移植性。
5、命令行工具和API接口:FFmpeg提供了一组命令行工具,可以直接使用命令行进行音视频处理和转换。同时,它还提供了丰富的API接口,供开发者在自己的应用程序中集成和调用。

因此很有学习的必要,本系列文章,会在Qt的基础上,以最新的FFmpeg 的版本,不断的增添播放器的功能。

正文

一、开发环境

win11
Qt 5.15.2 MinGW 64 bit

二、搭建环境

参考这篇文章:ffmpeg(一) ffmpeg+QT开发环境搭建
这篇文章写了ffmpeg的下载以及基于Qt环境打搭建。
可以稍微参考一下。
FFmpeg 下载地址:FFmpeg下载地址
可以稍微注意一下下载的版本要下载哪一个。
在这里插入图片描述

三、测试代码

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>   // 利用打印函数
 
// ffmpeg 是纯 C 语言的代码,在 C++ 当中不能直接进行 include
extern "C" {
#include <libavcodec/avcodec.h>
}
 
int main(int argc, char *argv[])
{
    qDebug() << "yeahhh"<< av_version_info();
 
    QApplication a(argc, argv);
    MainWindow w;
 
    w.show();
 
    return a.exec();
}

四、调用库的介绍

1、libavformat

用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;音视频的格式解析协议,为 libavcodec 分析码流提供独立的音频或视频码流源

2、libavcodec

用于各种类型声音/图像编解码;该库是音视频编解码核心,实现了市面上可见的绝大部分解码器的功能,libavcodec 库被其他各大解码器 ffdshow,Mplayer 等所包含或应用

3、libavfilter

音视频滤镜库,该模块提供了包括音频特效和视频特效的处理,在使用FFmpeg的API进行编解码的过程中,直接使用该模块为音视频数据做特效处理是非常方便和高效的方式

4、libavutil

核心工具库,该模块是最基础的模块之一,许多其他模块都会依赖该库做一些基本的音视频处理操作

5、libswresample

该模块可用于音频重采样,可以对数字音频进行音声道、数据格式、采样率等多种进本信息的转换

6、libswscale

(原始视频格式转换)用于视频场景比例缩放、色彩映射转换;图像颜色空间或格式转换,如 rgb565,rgb888 等与 yuv420 等之间转换。

End、遇到的问题

2、Qt 在线安装容易报错,断开问题

下载在线安装包 QT 在线安装包链接,然后用以下命令启动安装包,切换成中科大的源,要不下载很慢
.\qt-unified-windows-x86-4.2.0-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject

1、在线安装QMaintainTool很慢

打开cmd,执行C:\Qt\MaintenanceTool.exe --mirror https://mirrors.ustc.edu.cn/qtproject

2、Qt5.15 无法调试FFmpeg

参考:https://juejin.cn/post/7052201703281524750
以为是调试是需要增加其他的软件进行调试,但目前发现,好像用MinGW就可以进行调试了。
可能因为下载的库本身就是windows的,又没有经过VS2019进行交叉编译,所以在VS2019上使用Debug模式无法进行调试。
如果要使用VS2019的话,也可以使用,但估计无法进行调试。

参考

1、ffmpeg(一) ffmpeg+QT开发环境搭建
2、FFmpeg小白学习记录(一)信息查看

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MIPI 打怪升级之DSI篇

MIPI 打怪升级之DSI篇 目录 1 Overview2 DSI Mode 2.1 Video 模式2.2 Command 模式3 DSI Physical Layer 3.1 数据流控3.2 双向性3.3 Video Mode Interfaces3.4 Command Mode Interfaces3.5 Clock4 多通道管理 4.1 通道数匹配4.2 线上数据分布5 DSI 协议 5.1 包格式 5.1.1 短包…

上新!2023年汉字小达人市级比赛在线模拟题增加2个刷题试卷

各位小学三年级到五年级的上海学霸孩子们&#xff0c;刚刚结束了上海小学生古诗文大会的复赛&#xff0c;就紧锣密鼓地全身心投入到上海小学生汉字小达人的市级比赛的备赛中了。 为了助各位孩子一臂之力&#xff0c;我把在线模拟题进行了更新&#xff0c;新增了两个可以刷题的试…

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…

细胞级浮游藻类智能检测系统

产品信息 新一代浮游藻类智能检测系统问世&#xff01;英视江河首次将藻类检测精度提升到细胞级&#xff01;英视江河致力于新一代浮游生物的识别、计数。特征是群体藻类和群体种个体均精准检测&#xff01;目前设备已在山东、宁夏、内蒙多地实际应用。 郑州英视江河生态环境科…

SpringBoot——配置及原理

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用&#xff1a;可以覆盖SpringBoot配置的默认值。 ◀ YML&#xff08;is not a Markup Language&#xff1a;不仅仅是一个标记语言&#xff09;&#xff1…

Android修行手册-ViewPager定制页面切换以及实现原理剖析

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

论文阅读——Prophet(cvpr2023)

一、Framework 这个模型分为两阶段&#xff1a;一是答案启发生成阶段&#xff08;answer heuristics generation stage&#xff09;&#xff0c;即在一个基于知识的VQA数据集上训练一个普通的VQA模型&#xff0c;产生两种类型的答案启发&#xff0c;答案候选列表和答案例子&am…

强化学习,快速入门与基于python实现一个简单例子(可直接运行)

文章目录 一、什么是“强化学习”二、强化学习包括的组成部分二、Q-Learning算法三、迷宫-强化学习-Q-Learning算法的实现全部代码&#xff08;复制可用&#xff09;可用状态空间检查是否超出边界epsilon 的含义更新方程 总结 一、什么是“强化学习” 本文要记录的大概内容&am…

图形编辑器开发:缩放和旋转控制点

大家好&#xff0c;我是前端西瓜哥。好久没写图形编辑器开发的文章了。 今天来讲讲控制点。它是图形编辑器的不可缺少的基础功能。 控制点是吸附在图形上的一些小矩形和圆形点击区域&#xff0c;在控制点上拖拽鼠标&#xff0c;能够实时对被选中进行属性的更新。 比如使用旋…

LED面板显示屏驱动芯片

一、基本概述 TM1638是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、主要应用场合 主要适用于家电设备(智能热水器、微波炉…

Hibernate 脏检查和刷新缓存机制

刷新缓存: Session是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的保存,更新,删除和加载java对象的方法,Session具有一个缓存,可以管理和追踪所有持久化对象,对象和数据库中的相关记录对应,在某些时间点,Session会根据缓存中对象的变化来执行相关SQL语句,将对…

杂货铺 | Windows系统上解压缩tgz文件

文章目录 &#x1f4da;快速终端打开实现 & 解压缩实现步骤&#x1f4da;环境变量的一般配置步骤 & 问题解决思路 &#x1f4da;快速终端打开实现 & 解压缩实现步骤 将对应的tgz文件放入对应的文件夹。快速在指定文件夹下打开终端 打开对应的路径 双击地址栏 然后…

Cisco Packet Tracer配置命令——路由器篇

路由基础 路由器用于互联两个或多个网络&#xff0c;具有两项功能&#xff1a;为要转发的数据包选择最佳路径以及将数据包交换到正确的端口&#xff0c;概括为路由选择和分组转发。 路由选择 路由选择就是路由器根据目的IP地址的网络地址部分&#xff0c;通过路由选择算法确…

图的建立基本操作

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 添加头文件#define MAX_VERTEX_NUM 100 //图中最大顶点数//struct ArcNode* nextarc; //ArcNode* firstarc; //这两个是很有必要的&#xff0c;如果你没有这两个指针&#xff0c;你就无法判…

力扣114. 二叉树展开为链表(java,用树模拟链表)

Problem: 114. 二叉树展开为链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 1.展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左…

Selenium 4.11 正式发布--再也不用手动更新chrome driver 了

Selenium 4.11.0 正式发布了&#xff0c;先来看一下主要特性。 Chrome DevTools支持的版本现在是&#xff1a;v113、v114和v115&#xff08;Firefox仍然对所有版本使用v85&#xff09; 通过Selenium Manager支持Chrome For Testing&#xff08;CfT&#xff09; Selenium Manag…

LeetCode Hot100 105.从前序与中序遍历序列构造二叉树

题目&#xff1a;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 代码&#xff1a; class Solution {private Map<Integer, Integer> indexM…

midjourney过时了?如何使用基于LCM的绘图技术画出你心中的画卷。

生成 AI 艺术在近年来迅速发展&#xff0c;吸引了数百万用户。然而&#xff0c;传统的生成 AI 艺术需要等待几秒钟或几分钟才能生成&#xff0c;这对于快节奏的现代社会来说并不理想。 近日&#xff0c;中国清华大学和 AI 代码共享平台 HuggingFace 联合开发了一项新的机器学习…

性能压测工具:wrk

一般我们压测的时候&#xff0c;需要了解衡量系统性能的一些参数指标&#xff0c;比如。 1、性能指标简介 1.1 延迟 简单易懂。green:一般指响应时间 95线&#xff1a;P95。平均100%的请求中95%已经响应的时间 99线&#xff1a;P99。平均100%的请求中99%已经响应的时间 平…

2023年亚太杯数学建模A题水果采摘机器人的图像识别功能(matlab 部分代码)

对于1-4问针对的是附录1 中的数据 clc; close all; clear; % 图像文件夹路径 folder_path E:/新建文件夹/yatai/Attachment/Attachment 1/; % 图像文件列表 image_files dir(fullfile(folder_path, *.jpg)); % 假设所有图片都是jpg格式% 解析文件名中的数字&#xff0c;并转…