本文转自: http://blog.csdn.net/leixiaohua1020/article/details/11693997
FFMPEG中有很多结构体,最关键的结构体可以分成以下几类:
1、解协议 (http, rtsp, rtmp, mms)
AVIOContext, URLProtocol, URLContext主要存储音视频使用的协议的类型以及状态。
URLProtocol存储输入音视频使用的封装格式。每种协议都对应一个URLProtocol结构。
2、解封装(flv, avi, rmvb, mp4)
AVFormatContext主要存储音视频封装格式中包含的信息;
AVInputFormat存储输入音视频使用的封装格式。每种音视频封装格式都对应一个AVInputFormat结构。
3、解码(h264, mpeg2, aac, mp3)
每个AVStream存储一个视频/音频流的相关数据;每个AVStream对应一个AVCodecContext,存储该视/音频流使用解码方式的相关数据;每个
AVCodecContext对应一个AVCodec,包含该视/音频对应的解码器。每种解码器都对应一个AVCodec结构。
4、存数据
视频数据:一个结构一般是一帧
音频数据:一个结构可能有好几帧
解码前数据:AVPacket
解码后数据:AVFrame
他们间的对应关系如下所示: