注:写了一系列的结构体的分析的文章,在这里列一个列表:

FFMPEG结构体分析:AVFrame
FFMPEG结构体分析:AVFormatContext
FFMPEG结构体分析:AVCodecContext
FFMPEG结构体分析:AVIOContext
FFMPEG结构体分析:AVCodec
FFMPEG结构体分析:AVStream

FFMPEG结构体分析:AVPacket

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:

a)        解协议(http,rtsp,rtmp,mms)

AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)

b)        解封装(flv,avi,rmvb,mp4)

AVFormatContext主要存储视音频封装格式中包含的信息;AVInputFormat存储输入视音频使用的封装格式。每种视音频封装格式都对应一个AVInputFormat 结构。

c)        解码(h264,mpeg2,aac,mp3)

每个AVStream存储一个视频/音频流的相关数据;每个AVStream对应一个AVCodecContext,存储该视频/音频流使用解码方式的相关数据;每个AVCodecContext中对应一个AVCodec,包含该视频/音频对应的解码器。每种解码器都对应一个AVCodec结构。

d) 存数据

视频的话,每个结构一般是存一帧;音频可能有好几帧

解码前数据:AVPacket

解码后数据:AVFrame

他们之间的对应关系如下所示:

FFMPEG中最关键的结构体之间的关系相关推荐

  1. FFmpeg 结构体学习(八):FFMPEG中重要结构体之间的关系

    FFMPEG中结构体很多.最关键的结构体可以分成以下几类: 解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议 ...

  2. 【FFMPEG源码分析】ffmpeg中context与AVClass,AVOption之间的关系

    通过前面三篇文章的分析大致了解了ffmpeg中demuxer/decoder模块的内部大致结构和数据处理流程.在阅读源码的过程中经常会看到XXXContext,AVClass xxx_class, A ...

  3. FFmpeg源代码简单分析:结构体成员管理系统-AVOption

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  4. Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)

    目录 理论 程序 理论 在Socket中,数据一般是char型(一般情况下,其实最好是用uchar来传输,避免莫名其妙的错误,但用char也是可以的),而在Qt里面可以使用QByteArray,这个在 ...

  5. FFmpeg源代码简单分析:结构体成员管理系统-AVClass

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  6. Linux中表示“时间”的结构体和相关函数

    转载于:http://blog.chinaunix.net/uid-25909722-id-2827364.html Linux中表示"时间"的结构体和相关函数 2011-09-1 ...

  7. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  8. c++中的构造数据类型----结构体

    c++中的构造数据类型----结构体 构造数据类型: 无论是基本数据类型还是数组类型都仅仅描述了事物某一方面的特性, 但是, 一种事物往往具有多方面的属性, 如一个同学有学号, 姓名, 性别, 年龄等 ...

  9. crash中使用list遍历结构体

    list [[-o] offset][-e end][-[s|S] struct[.member[,member] [-l offset]] -[x|d]] [-r|-h|-H] start 如下介绍 ...

最新文章

  1. 3种方式理解旋转变换
  2. css属性cusor
  3. Spark Streaming使用Kafka保证数据零丢失
  4. Go 语言简介(上)— 语法
  5. 讲讲我和Spring创始级程序员共同review代码的故事
  6. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(二)
  7. Java基础知识回顾之七 ----- 总结篇
  8. 微信企业号开发之如何建立连接
  9. mvc filter 的用法
  10. PC端动态视频背景引导页(非自适应)
  11. redis订阅怎么退出_关于redis,学会这8点就够了
  12. python类中变量作用域_python进阶14变量作用域LEGB
  13. [短评]企业裁员行为对整个社会的正面意义
  14. python自动化办公都能做什么-盘点使用Python进行自动化办公所需要的知识点
  15. opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
  16. java 工作流引擎调研总结
  17. 数据字典的作用和定义(软件工程)
  18. 如何用MATLAB预测未来人口,使用matlab对将来人口总数进行预测
  19. DNS污染的解决方法
  20. Android开源框架:Retrofit

热门文章

  1. JavaScript基础语法快速入门
  2. js 能实现监听F5页面刷新子iframe 而父页面不刷新
  3. innodb数据备份语句
  4. php判断是否存在http,php获取http-header来判断文件是否存在
  5. eclipse新建服务器项目,使用eclipse快速新建spirngboot项目的方法
  6. 三维点云学习(4)7-ransac 地面分割+ DBSCAN聚类比较
  7. react脚手架_react脚手架create-react-app安装与使用
  8. linux 系统基础知识 - vgextend命令
  9. Jolt大奖获奖图书
  10. 描述C,C++编译和链接过程