首页 > 编程语言 >FFMPEG C++封装(一)(C++ FFMPEG)

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

时间:2024-03-27 10:32:00浏览次数:28  
标签:编码 封装 FFMPEG C++ 音视频 3.2 类型 列表

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++,音视频,3.2,类型,列表
From: https://blog.csdn.net/flysnow010/article/details/137063852

相关文章

  • java的封装
    封装概述    java中的封装指的是将一系列有关的事物的共同属性和行为提取出来放到一个类中,隐藏对象的实行和现实细节,仅对外提供公共的访问方式的操作。这样说起来感觉很抽象,也不好理解,这里不妨举一个例子。将配置电脑这个动作看成封装。    这个要怎么理解呢......
  • php:页面链接数据库(封装),其他页面引入方法
    数据库连接get_db_conn.php//创建连接$conn=mysqli_connect($servername,$username,$password,$dbname);<?php//数据库连接参数define('DB_SERVER','localhost');//数据库服务器的地址define('DB_USERNAME','root');//数据库账户define(......
  • 使用ffmpeg命令把单张或多张图片生成固定时长的视频
    1,官网下载FFmpeg.exe      参见:https://blog.csdn.net/m0_46278037/article/details/1137905402,FFmpegHelper代码如下1publicclassFFmpegHelper2{3publicvoidConvertVideo()4{56stringinputDi......
  • 【蓝桥杯选拔赛真题48】C++九进制回文数 第十四届蓝桥杯青少年创意编程大赛 算法思维
    目录C++九进制回文数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++九进制回文数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现提示信息:回文数:反向排列与原......
  • C/C++整形变量溢出问题
    参考C语言的整型溢出问题|酷壳-CoolShell   概述整形溢出分为无符号(unsigned)整型溢出和有符号(signed)整型溢出无符号整型溢出对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”比如,两个unsignedint类型求和溢出......
  • C++ map踩坑
    目录!!!不要直接使用[]来操作map,否则会有意想不到的错误。尽量使用map提供的函数(count、find、insert、erase)来操作map242.有效的字母异位词描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t......
  • TypeScript日期方法封装
    TypeScript日期方法封装1.获取当前日期,格式YYYY-MM-DD2.获取当前时间,格式YYYY-MM-DDHH:mm:ss3.返回一年的总天数4.返回日期是当年第多少天5.返回时间范围的所有周末6.返回该日期的周末日期7.返回时间范围的各个月份的总天数8.返回日期范围内所有周末,一级前......
  • C++ 用户输入与数据类型详解:建立基本计算器及变量类型
    C++用户输入你已经学习了cout用于输出(打印)值。现在我们将使用cin来获取用户输入。cin是一个预定义变量,它使用提取运算符(>>)从键盘读取数据。在下面的示例中,用户可以输入一个数字,该数字存储在变量x中。然后我们打印x的值:示例intx;cout<<"Typeanumber:";//......
  • C++ 用户输入与数据类型详解:建立基本计算器及变量类型
    C++用户输入你已经学习了cout用于输出(打印)值。现在我们将使用cin来获取用户输入。cin是一个预定义变量,它使用提取运算符(>>)从键盘读取数据。在下面的示例中,用户可以输入一个数字,该数字存储在变量x中。然后我们打印x的值:示例intx;cout<<"Typeanumber:"......
  • C++文件类(文件流类)及用法详解
    open()fstreamifstreamofstream打开指定文件,使其与文件流对象相关联。is_open()检查指定文件是否已打开。close()关闭文件,切断和文件流对象的关联。swap()交换2个文件流对象。operator>>fstreamifstream重载>>运算符,用于从指定文件中读取数据。gcoun......