FFMPEG C++封装(一)(C++ FFMPEG)

1 概述

FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C++封装,形成C++ FFMPG库。

2 架构

架构图如下所示:

在这里插入图片描述
架构说明:

  • Init 初始化FFMPEG库。
  • IStream 输入流,FFMPEG的输入音视频文件。
  • Packet 音视频数据包
  • Decoder 音视频编码器
  • Frame 音视频帧
  • FilterGraph 音视频过滤器
  • Encoder 音视频解码器
  • OStream 输出流,FFMPEG的输出音视频文件。
  • Utils 辅助工具函数

3 概要设计

3.1 类图

在这里插入图片描述

3.2 模块

划分为如下9个模块

3.2.1 Init

函数列表:

  • Init 初始化FFMPEG库

3.2.2 IStream

类型列表:

  • Program 节目类型
  • IStream 输入流类型

3.2.3 Packet

类型列表:

  • Rational 分数类型,表示帧率/时间单位
  • Packet 编码后数据包类型

3.2.4 Decoder

类型列表:

  • Decoder 解码器类
  • VideoDecoder 视频解码器
  • AudioDecoder 音频解码器

3.2.5 Frame

类型列表:

  • Frame 未编码帧类型
  • VideoFrame 构造视频帧类型
  • AudioFrame 构造音频帧类型

3.2.6 FilterGraph

类型列表:

  • FilterGraph 简单过滤器类型
  • ComplexFilterGraph 复合过滤器类型

3.2.7 Encoder

类型列表:

  • Encoder 编码器
  • VideoEncoder 视频编码器
  • AudioEncoder 音频编码器

3.2.8 OStream

类型列表:

  • FormatParam 文件格式参数
  • EncoderParam 编码参数
  • VideoEncParam 视频编码参数
  • AudioEncParam 音频编码参数
  • OStream 输出流

3.2.9 Utils

函数列表:

  • Report 配置是否在命令行输出编解码信息
  • Formats 在命令上打印支持的文件格式
  • Codecs 在命令上打印支持的编解码格式
  • Protocols 在命令上打印支持的协议格式
  • Filters 在命令上打印支持的过滤器格式
  • PixFmts 在命令上打印支持的像素格式
  • SampleFmts 在命令上打印支持的采样格式
  • Time 获取时间
  • NoPtsValue 返回无效PTS
  • ToTime 转换PTS为指定timebasae为单位的时间
  • DisplayCardNames 显示显卡名称,确定是否可以使用硬件加速

FFMPEG C++封装(二)

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

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

相关文章

C语言运算符和表达式——强制类型转换

目录 自动类型转换 强制类型转换运算符——类型强转(Casting) 问题的提出 Example: int total, number; float aver; …… 整数除法: aver total / number; total:15 →15/2 …

R语言数据分析基础(三)

在R语言中,数据类型主要包括以下几种: 数值型(Numeric): 数值型数据包括整数(integer)和双精度数(double)。整数是没有小数部分的数字,而双精度数可以有小数部分。在R中&…

大模型日报2024-03-29

大模型资讯 Databricks推出开源大型语言模型DBRX,与Llama 2、Mixtral和GPT-3.5竞争 摘要: Databricks近日推出了一款开源的大型语言模型DBRX,旨在与现有的Llama 2、Mixtral和GPT-3.5展开竞争。DBRX模型将使企业能够掌控自己的生成式AI工具开发&#xff0…

每日OJ题_子序列dp④_力扣646. 最长数对链

目录 力扣646. 最长数对链 解析代码 力扣646. 最长数对链 646. 最长数对链 难度 中等 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i] [lefti, righti] 且 lefti < righti 。 现在&#xff0c;我们定义一种 跟随 关系&#xff0c;当且仅当 b &l…

Java | 阶乘和计算

大家可以关注一下专栏&#xff0c;方便大家需要的时候直接查找&#xff0c;专栏将持续更新~ 题目描述 编写一个Java程序&#xff0c;用于计算12!3!…20!的和。其中&#xff0c;n!表示n的阶乘&#xff0c;即从1乘到n。 程序需要输出12!3!…20!的和。 解题思路 初始化变…

OpenHarmony:RichEditor组件样例开发

使用 richEditor 组件实现一个富文本编辑框&#xff0c;包含富文本编辑区域和功能栏&#xff0c;功能栏中有多个按键&#xff0c;可以调整字体大小、字体样式、字体颜色、布局&#xff0c;并可以插入图片。 api 版本&#xff1a;api11 主页面 import { TitleBar } from ../.…

element跑马灯/轮播图,第一页隐藏左边按钮,最后一页隐藏右边按钮(vue 开箱即用)

图示&#xff1a; 第一步&#xff1a; <el-carousel :class"changeIndex0?leftBtnNone:changeIndeximgDataList.length-1? rightBtnNone:" height"546px" :autoplay"false" change"changeNext"><el-carousel-item v-for…

Stata 15 for Mac:数据统计分析新标杆,让研究更高效!

Stata 是一种统计分析软件&#xff0c;适用于数据管理、数据分析和绘图。Stata 15 for Mac 具有以下功能&#xff1a; 数据管理&#xff1a;Stata 提供强大的数据管理功能&#xff0c;用户可以轻松导入、清洗、整理和管理数据集。 统计分析&#xff1a;Stata 提供了广泛的统计…

A Little Is Enough: Circumventing Defenses For Distributed Learning

联邦学习的攻击方法&#xff1a;LIE 简单的总结&#xff0c;只是为了能快速想起来这个方法。 无目标攻击 例如总共50个客户端&#xff0c;有24个恶意客户端&#xff0c;那么这个时候&#xff0c;他需要拉拢2个良性客户端 计算 50 − 24 − 2 50 − 24 0.923 \frac{50-24-2}{…

瑞_23种设计模式_中介者模式

文章目录 1 中介者模式&#xff08;Mediator Pattern&#xff09;1.1 介绍1.2 概述1.3 中介者模式的结构1.4 中介者模式的优缺点1.5 中介者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《2…

Java项目:80 springboot师生健康信息管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的角色&#xff1a;管理员、宿管、学生 管理员管理宿管员&#xff0c;管理学生&#xff0c;修改密码&#xff0c;维护个人信息。 宿管员…

数组类模板(类模拟实现静态数组)

目录 介绍&#xff1a; 案例描述&#xff1a; 思路&#xff1a; 对要求分别分析实现&#xff1a; 创建对应的类&#xff1a; 1.定义一个数组类 2.类中属性有&#xff1a;数组&#xff0c; 容量&#xff0c; 大小 3.数组函数有&#xff1a; 构造函数&#xff08;容量&am…

C++数塔问题

#include <iostream> #include <vector>using namespace std;int main() {// 读取输入int n;cin >> n;vector<vector<int>> tower(n, vector<int>(n));for (int i 0; i < n; i) {for (int j 0; j < i; j) {cin >> tower[i][…

排序---数组和集合

1、数组排序 Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序&#xff0c;并且是按照从小到大的排序。 public static void main(String[] args) {Integer []arr {1,2,3,4,5,6};//升序Arrays.sort(arr);for (int x:arr){System.out.print(x " ");}Sys…

Maven:构建现代化软件项目的强大工具

在软件开发的世界中&#xff0c;Maven 是一个备受欢迎的构建工具。它提供了一种标准化、自动化的方式来管理项目的依赖、构建过程和部署。本文将深入探讨 Maven 的各个方面&#xff0c;帮助您更好地理解和使用这一强大的工具。 一、Maven 的简介 Maven 是一个基于项目…

axios请求类型是文件流怎么显示报错信息

axios请求类型是文件流&#xff0c;但是报错信息的话没法显示&#xff0c;在request.js文件中更改一下request拦截器代码&#xff1a; service.interceptors.request.use(config > { ...... , error > { console.log(error, 报错报错) // 处理请求错误 if (error.respons…

IRIS / Chronicles 定义 Item Response Type 字段属性

Response Type 在关系数据库中可能没有这个选项&#xff0c;我们对关系数据库表中的数据返回的数据就是是数据&#xff0c;通常不再做过多定义。 但是 IRIS 会对返回的数据也做一些定义&#xff0c;这个就是我们说的 Response Type。 Single &#xff08;单一&#xff09; 这…

二维随机变量的条件分布-已知X概率密度,X条件下的Y概率密度求解y的概率密度

问题&#xff1a;设数X在区间(0,1)上随机地取值,当观察到Xx(0<x<1)时,数Y在区间(x,1)上随机地取值.求Y的概率密度f(y)&#xff1f; 求解&#xff1a; 首先&#xff0c;数X在区间(0,1)上均匀分布&#xff0c;因此其概率密度函数fX​(x)为&#xff1a; fX​(x)1 0<…

Unity类银河恶魔城学习记录11-7 p109 Aplly item modifiers源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemData_Equipment.cs using System.Collections; using System.Collecti…

K8S安装和部署(kubeadmin安装1主2从)

这里用kubeadmin方式进行安装部署 1. 准备三台服务器 服务器地址 节点名称 192.168.190.200 master 主 192.168.190.201 node1 从 192.168.190.202 node2 从 2. 主机初始化&#xff08;所有主机&#xff09; 2.1根据规划设置主机名 #切换到192.168.190.200 hostnamectl…