AVSream中我们可以使用codec得到AVCodecContext指针,该结构体代表了AVStream中持有的codec相关的上下文,包含了众多编解码器需要的参数信息。一个AVStream对应一个AVCodecContext指针。但是,如果你使用较高的FFmpeg版本就应该发现,codec成员已经不受支持,也就是在AVStream中该成员已经被废弃,而且,AVCodecContext由于太过复杂,FFmpeg的维护者也开始逐渐拆分这个结构体的功能,准备废弃AVCodecContext。目前,官方推荐使用AVCodecParameters这个结构体来替代它。
其中,我们常用到的成员有:
//(1)编解码器类型,音频/视频/字幕
enum AVMediaType codec_type;
//其中,codec_type定义如下:
enum AVMediaType {
AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
AVMEDIA_TYPE_VIDEO,
AVMEDIA_TYPE_AUDIO,
AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
AVMEDIA_TYPE_SUBTITLE,
AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
AVMEDIA_TYPE_NB
};
//(2)像素格式(YUV420等)/音频采样格式
int format;
//(3)编解码器的id
//使用函数avcodec_get_name(codec_id)可以获得视频/音频编码格式
enum AVCodecID codec_id;
//(4)平均码率/比特率
int64_t