经过前面的学习对FFmpeg的基本流程已经很熟悉了,现在到了掌握其中细节的时候了,用FFmpeg做播放器解码操作中,涉及到了一些结构体,这些结构之间到底有什么关系,它们是怎样协同工作的呢。文章 FFMPEG中最关键的结构体之间的关系 对这些结构间的关系进行了分析,详细内容如下:

  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结构体分析:AVFrame
FFMPEG结构体分析:AVFormatContext
FFMPEG结构体分析:AVCodecContext
FFMPEG结构体分析:AVIOContext
FFMPEG结构体分析:AVCodec
FFMPEG结构体分析:AVStream
FFMPEG结构体分析:AVPacket

转载于:https://www.cnblogs.com/sunminmin/p/4463057.html

笔谈FFmpeg(二)相关推荐

  1. FFmpeg二次开发

    本文主要讲解 FFmpeg 的二次开发,ffmpeg.exe 的命令行功能特别强大,很多需求都能直接用命令行实现,但是总有一些需求用 命令行实现不太好做. 而你实现那些特殊需求,通常需要把 ffmpe ...

  2. ffmpeg (二):ffmpeg结合SDL2.0解码视频流

    转自:http://blog.csdn.net/oldmtn/article/details/20284721 看了http://blog.csdn.NET/leixiaohua1020/articl ...

  3. 深入浅出FFMPEG(二) SDK version 0.11

    用户接口 数据结构 基本概念 编解码器.数据帧.媒体流和容器是数字媒体处理系统的四个基本概念. 首先需要统一术语: 容器/文件(Conainer/File):即特定格式的多媒体文件. 媒体流(Stre ...

  4. 【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  5. 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录

    官方文档:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 一.最简单安装: apt-get install ffmpeg 二.安装最新版本 大 ...

  6. ffmpeg的中文学习文档

    ffmpeg的中文学习文档 文章目录: 一.ffmpeg介绍 二.学习参考文档 1.中文 一.ffmpeg介绍 ffmpeg是视频处理工具,可选参数非常多,功能也非常的强大,可以用来开发各种视频处理工 ...

  7. 【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境

    文章目录 前言 一.下载 FFMPEG 二.拷贝可执行文件 三.拷贝动态库文件 四.运行 ffmpeg 命令 总结 前言 Android 中需要使用到 FFMPEG , 先在 Windows 中搭建一 ...

  8. 【Android FFMPEG 开发】Android 中使用 FFMPEG 对 MP3 文件进行混音操作

    文章目录 一.前置操作 ( 移植 FFMPEG ) 二.FFMPEG 混音命令 三.Android FFMPEG 混音源代码完整示例 四.博客源码 一.前置操作 ( 移植 FFMPEG ) 参考 [A ...

  9. 201024阶段二Linux

    目录 一.学习的知识点 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 四.其他需要反馈的问题 五.心得体会 一.学习的知识点 1 Linux操作系统 2 Qt 3 sqlite3 4 ffm ...

  10. FFmpeg 在 Python 中的安装使用方法详解

    目录 一.了解 FFmpeg 二.FFmpeg 的组成 三.FFmpeg for Windows 3.1 下载 3.2 安装 3.3 测试 四.用法 五.附录 一.了解 FFmpeg FFmpeg是一 ...

最新文章

  1. 讲座记录:从码农到架构师(精简版)
  2. 不用3D建模软件,如何用数学公式创造一个女孩?会眨眼,有光影的那种
  3. 面试官:你知道java类是怎么跑起来的吗?问的我一脸懵
  4. 人与动物之间有没有一条不可逾越的鸿沟?——从基础存在论到生命哲学
  5. CSS继承选择器与包含选择器的比较
  6. EDM营销的三个小窍门-EDM营销必看
  7. 理解矩阵 的一些评论
  8. 发布后网站浏览时出现乱码
  9. mysql全表重命名备份_Mysql数据库和表的常用操作以及数据备份恢复
  10. 上车时机已到--.NETCore是适应时代发展的雄鹰利剑
  11. Java并发教程–重入锁
  12. centos7下yum源安装saltstack
  13. 【java毕业设计】 基于java+SSH+JSP的保险业务管理系统设计与实现(毕业论文+程序源码)——保险业务管理系统
  14. Redis安装到Windows系统上的详细步骤
  15. 考研408-计算机组成原理-总线
  16. 软件测试面试宝典【测试流程、数据库、Linux、测试工具、自动化、性能测试】
  17. ORACLE —— 事务
  18. ffmpeg实现g711音频和H264,H265封装mp4(整理,非原创)
  19. 【冰糖R语言】Shiny简单笔记
  20. 和老板比,员工弱爆了

热门文章

  1. 一场重新定义的发布会
  2. python画五角星_Python第25课:海龟绘图_自定义函数的应用
  3. TCP连接、Http连接与Socket连接
  4. 安装github for windows问题解决
  5. 【转】C#中的Stream
  6. CF 61E 树状数组+离散化 求逆序数加强版 三个数逆序
  7. 组队开发第二周第五次会议
  8. 如何把自己写的python程序给别人用
  9. Android Studio connot resolve symbol XXX 无法解析的符号
  10. Android Broadcast Receiver 与Activity() (android 开发的四大组件)