FFMPEG结构体分析:AVFormatContext
注:写了一系列的结构体的分析的文章,在这里列一个列表:
FFMPEG结构体分析:AVFrame
FFMPEG结构体分析:AVFormatContext
FFMPEG结构体分析:AVCodecContext
FFMPEG结构体分析:AVIOContext
FFMPEG结构体分析:AVCodec
FFMPEG结构体分析:AVStream
FFMPEG结构体分析:AVPacket
FFMPEG有几个最重要的结构体,包含了解协议,解封装,解码操作,此前已经进行过分析:
在此不再详述,其中AVFormatContext是包含码流参数较多的结构体。本文将会详细分析一下该结构体里每个变量的含义和作用。
首先看一下结构体的定义(位于avformat.h):
在使用FFMPEG进行开发的时候,AVFormatContext是一个贯穿始终的数据结构,很多函数都要用到它作为参数。它是FFMPEG解封装(flv,mp4,rmvb,avi)功能的结构体。下面看几个主要变量的作用(在这里考虑解码的情况):
struct AVInputFormat *iformat:输入数据的封装格式
AVIOContext *pb:输入数据的缓存
unsigned int nb_streams:视音频流的个数
AVStream **streams:视音频流
char filename[1024]:文件名
int64_t duration:时长(单位:微秒us,转换为秒需要除以1000000)
int bit_rate:比特率(单位bps,转换为kbps需要除以1000)
AVDictionary *metadata:元数据
视频的时长可以转换成HH:MM:SS的形式,示例代码如下:
视频的原数据(metadata)信息可以通过AVDictionary获取。元数据存储在AVDictionaryEntry结构体中,如下所示
每一条元数据分为key和value两个属性。
在ffmpeg中通过av_dict_get()函数获得视频的原数据。
下列代码显示了获取元数据并存入meta字符串变量的过程,注意每一条key和value之间有一个"\t:",value之后有一个"\r\n"
相关文章
- gitlab结构分析
- JPG文件结构分析
- EigenGame:将主成份分析(PCA)作为一个博弈游戏
- UPX源码分析——加壳篇
- 关于QT安装的一些心得(QT551, VS2013)项目开发配置,以及项目结构分析
- HTML网页结构分析1
- 代码包结构分析工具JDepend的使用方法
- java实现网页结构分析列表发现
- Android4.2.2源代码文件夹结构分析
- 《中国人工智能学会通讯》——11.66 结构属性表示及其在脑影像分析中的应用
- FFMPEG结构体分析:AVIOContext
- vue-cli#2.0项目结构分析
- 大数据Spark“蘑菇云”行动第55课:在线广告点击流处理代码的分析和实现
- 林涛:BYOD发展动力与安全需求分析
- sizeof结构体分析
- 「WebRTC」最新 WebRTC 源码目录结构分析
- 【JUC】JDK1.8源码分析之ReentrantReadWriteLock(七)
- 深度分析ORACLE热点块问题
- Linux中ifreq 结构体分析和使用 及其在项目中的简单应用
- PNG文件结构分析 ---Png解析
- 5.分析内核中断运行过程,以及中断3大结构体:irq_desc、irq_chip、irqaction(详解)