FFmpeg播放器的相关概念【1】

播放器框架

在这里插入图片描述

相关术语

容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。
媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器(有些码流音频他是纯PCM)。
数据帧/数据包(Frame/Packet):通常,一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。
编解码器:编解码器是以帧为单位实现压缩数据和原始数据之间的相互转换的。

复用器和解复用器(封装和解封装)

在这里插入图片描述

编码器和解码器

在这里插入图片描述

FFmpeg常用函数库

FFMPEG有8个常用库:
AVUtil:核心工具库,下面的许多其他模块都会依赖该库做一些基本的音视频处理操作。
AVFormat:文件格式和协议库,该模块是最重要的模块之一,封装了Protocol层Demuxer、Muxer层,使得协议和格式对于开发者来说是透明的。
AVCodec:编解码库,封装了Codec层,但是有一些Codec是具备自己的License的,FFmpeg是不会默认添加像libx264、FDK-AAC等库的,但是FFmpeg就像一个平台一样,可以将其他的第三方的Codec以插件的方式添加进来,然后为开发者提供统一的接口。
AVFilter:音视频滤镜库,该模块提供了包括音频特效和视频特效的处理,在使用FFmpeg的API进行编解码的过程中,直接使用该模块为音视频数据做特效处理是非常方便同时也非常高效的一种方式。
AVDevice:输入输出设备库,比如,需要编译出播放声音或者视频的工具ffplay,就需要确保该模块是打开的,同时也需要SDL的预先编译,因为该设备模块播放声音与播放视频使用的都是SDL库。
SwrRessample:该模块可用于音频重采样,可以对数字音频进行声道数、数据格式、采样率等多种基本信息的转换。
SWScale:该模块是将图像进行格式转换的模块,比如,可以将YUV的数据转换为RGB的数据,缩放尺寸由1280720变为800480。
PostProc:该模块可用于进行后期处理,当我们使用AVFilter的时候需要打开该模块的开关,因为Filter中会使用到该模块的一些基础函数。

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

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

相关文章

UFS Explorer Professional Recovery: 如何从启用了 mSATA 缓存的 Drobo 设备中恢复数据

天津鸿萌科贸发展有限公司是 UFS Explorer Professional Recovery 数据恢复软件的授权代理商。 UFS Explorer Professional Recovery 数据恢复软件提供综合性的解决方案,用于解决复杂的数据恢复案例,包括那些采用特殊存储技术的案例,或介质受…

上海亚商投顾:创业板指震荡收涨 超70家ST股跌停

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡震荡,创业板指走势稍强,盘中一度涨超1%,黄白二线分化严重。算…

vue ts 导入 @/assets/ 红色显示的问题解决

vue ts 导入 /assets/ 红色显示的问题解决 一、问题描述 在使用的时候这样导入会出现如上的错误。 在使用的时候,导入的类型也没有对应的代码提示,说明导入有问题。 二、解决 在 tsconfig.json 中添加如下内容: {"compilerOptions&…

AI大模型探索之路-实战篇15: Agent智能数据分析平台之整合封装Tools和Memory功能代码

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

模式识别判断题

贝叶斯估计的方法类似于贝叶斯决策,也需要定义损失函数。(正确) 解释:贝叶斯估计是一种基于贝叶斯定理的参数估计方法,它在估计参数时考虑了参数的先验分布。与贝叶斯决策类似,贝叶斯估计也需要定义损失函数…

46.ThreadPoolExcutor接口

线程池状态 ThreadPoolExcutor使用int高3位来表示线程池状态,低29位表示线程数量 状态高三位接收新任务处理阻塞队列任务说明RUNNING111YYSHUTDOWN000NY不会接收新任务,但会处理阻塞队列剩余任务,比较温和,已经提交的任务都会执…

15.1 测试-重要性与testing包

1. 测试的重要性 1.1 单元测试 单元测试是针对一小部分代码进行独立地测试。 单元测试的对象通常是单个函数或方法,而要测试的是它在接受给定的输入后,能否产生符合预期的输出。 单元测试的作用主要表现在以下两个方面: 验证程序的最小…

C++ STL-迭代器函数对象适配器

目录 一.迭代器 二. 函数对象 三. 适配器 一.迭代器 是一种通用的指针类型,可以用来遍历 STL 容器中的元素。 具有以下作用和意义: 提供一种通用的方式来访问容器中的元素。允许对不同类型的容器进行统一的操作。增强了代码的灵活性和可扩展性。 一…

The Best Toolkit 最好用的工具集

The Best Toolkit 工欲善其事,必先利其器,整理过往工作与生活中遇到的最好的工具软件 PDF合并等 PDF24 Tools PDF查看器 SumatraPDF 可以使用黑色来查看,相对不伤眼睛,也有电子书相关的阅读器 Kindle pdf裁边工具 briss 软件卸载…

【C++题解】1085 - 寻找雷劈数

问题:1085 - 寻找雷劈数 类型:for循环 题目描述: 把整数 3025 从中剪开分为 30 和 25 两个数,此时再将这两数之和平方,计算结果又等于原数。 (3025)(3025)55553025 ,这样的数叫“雷劈数”。 求所有符合这…

Photoshop版本选择及系统要求

1、ps2018cc/2020cc版本 适合新手,增加了很多智能化操作,非常方便好上手。 2020: 2、ps2015版本 cc2015版本不论是功能还是硬件上,都是不二选择,适合于配置较低的电脑,该有的基本功能它都有。 3、2021/2…

std::numeric_limits::max和宏定义重复报错问题

问题描述 今天在编译Beckhoff ADS开源组件的时候发现编译报错&#xff0c;报错代码如下 long AdsDevice::ReadReqEx2(uint32_t group, uint32_t offset, size_t length, void* buffer, uint32_t* bytesRead) const {if (length > std::numeric_limits<uint32_t>::ma…

Algorand 的复兴之路:改变游戏规则,打造 RWA 第一公链

TLDR 发布 AlgoKit 2.0&#xff0c;支持 Python 原生语言&#xff0c;打造开发者友好的开发环境&#xff0c;Algorand 的开发者社区规模迅速扩大。 升级共识激励机制&#xff0c;用 ALGO 奖励共识节点参与共识的执行&#xff0c;增加 ALGO 的应用场景&#xff0c;同时进一步确…

GB28181的主动、被动的含义

GB28181有点象视频会议&#xff1a; 终端通过SIP登录服务器。管理员点击某个终端&#xff0c;进行视频。 就是这个主动、被动没有听说。于是问了同事&#xff0c;他说&#xff1a; 主动被动是从服务器角度来看的。所谓被动&#xff0c;就是服务器开一个端口&#xff0c;被动接…

钢结构乙级资质延期,企业如何降低经营风险

当企业面临钢结构乙级资质延期时&#xff0c;为了降低经营风险&#xff0c;可以采取以下措施&#xff1a; 1. 提前规划与准备 资质延续规划&#xff1a;在资质到期前&#xff0c;提前规划资质延续的相关工作&#xff0c;包括准备所需材料、明确流程和时间节点等。 项目评估&…

js去重的几种方式

在JavaScript中&#xff0c;有多种方式可以实现数组去重。以下是几种常见的方式&#xff1a; 使用Set数据结构&#xff1a;使用Set可以快速实现数组去重&#xff0c;Set会自动排除重复的元素。例如&#xff1a; const arr [1, 2, 3, 3, 4, 4, 5]; const uniqueArr [...new S…

如何从官网下载 mysql 二进制安装包

一.下载二进行包 1. 官网网址: https://www.mysql.com/ 如图所示进入官网 2. 点击 DOWNLOADS ,进入如下图 在该页面找到 MySQL Community (GPL) Downloads 点进去 如上图页面&#xff0c;找到 MySQL Community Server 在点进去 下载 linux 通用版 点击最下面 Compressed …

(十四)统计学基础练习题八(选择题T351-400)

本文整理了统计学基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于想巩固统计学基础或备考的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-统计学三&#xff09;。序号之前的题请看往期文章。 351&#xff09; 352&#xff09; 353&#xff09; 3…

C++vector部分实现及感悟

myvector.h #pragma once #include<assert.h> #include<iostream> #include<vector> using namespace std; namespace bit {template<class T>//必须使用typename场景\template<typename T>与template<class T>一般情况下这两个通用&#…

Jmeter实战教程入门讲解

前言 通过前面对Jmeter元件的讲解&#xff0c;大家应该都知道常用元件的作用和使用了。编写Jmeter脚本前我们需要知道Jmeter元件的执行顺序&#xff0c;可以看看我这篇性能测试学习之路&#xff08;三&#xff09;—初识Jmeter来了解下。下面我将以工作中的一个简单的实例带大…