AVCodecContext

本文深入解析AVCodecContext结构,这是FFmpeg中核心的编解码器上下文结构,用于存储编解码器运行时的参数和状态。文章详细介绍了结构中的关键字段,如codec_type、codec、priv_data、time_base、width、height、extradata等,以及它们在音视频编解码过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AVCodecContext 结构表示程序运行的当前 Codec 使用的上下文,着重于所有 Codec 共有的属性(并且是在程
序运行时才能确定其值)和关联其他结构的字段。extradata 和 extradata_size 两个字段表述了相应 Codec 使用的私有
数据;codec 字段关联相应的编解码器;priv_data 字段关联各个具体编解码器独有的属性 context,和 AVCodec 结
构中的 priv_data_size 配对使用。
```
typedef struct AVCodecContext
{
enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
const struct AVCodec *codec;
enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
//codec的标记
unsigned int codec_tag;
//私有数据
void *priv_data;
//内部使用的上下文环境
struct AVCodecInternal *internal;
//比特率
int bit_rate;
//时间基,以秒为单位,对于固定帧率的视频,时间基为  1/帧率
AVRational time_base;
//视频的原始的宽度与高度,只针对视频
int width, height;
//比特流的宽高,当解码帧裁剪之后输出,所以可能与width, height值不一样,
int coded_width, coded_height;
int frame_number;
//扩展数据,如 mov 格式中 audio trak 中 aac 格式中 esds 的附加解码信息。
unsigned char *extradata;
//扩展数据的 size
int extradata_size;
//视频一帧图像的格式,如 YUV420
enum PixelFormat pix_fmt;
//音频的采样率
int sample_rate;
//音频的声道的数目
int channels;
int bits_per_sample;
int block_align;
// 指向相应的解码器,如:ff_h264_decoder
struct AVCodec *codec;
//指向具体相应的解码器的 context,如 H264Context
void *priv_data;
//公共操作函数
int(*get_buffer2)(struct AVCodecContext *c, AVFrame *pic);
}AVCodecContext;
```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值