ffmpeg源码分析(五)结构体之AVCodecContext

本文详细介绍了FFmpeg中AVCodecContext结构体的关键字段,包括编解码器选择、媒体类型、视频和音频参数设置,如分辨率、像素格式、码率、时间基等,以及音频采样格式。这些参数对于理解音视频处理流程和技术配置至关重要。

音视频处理流程

在这里插入图片描述
AVCodecContext是和编解码相关的结构体,同时也是变量最多的一个结构体。

头文件

github.com

关键字段

  1. codec: 指定要使用的编解码器,通常由 avcodec_find_encoderavcodec_find_decoder 函数获得。

  2. 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
};
  1. widthheight: 视频帧的宽度和高度。

  2. pix_fmt: 像素格式,描述视频帧的颜色表示方式,例如YUV420P。

  3. bit_rate: 指定目标码率,单位为比特每秒。

  4. time_base: 时间基准,表示每个时钟周期的持续时间。用于计算时间戳。

  5. gop_size: GOP(Group of Pictures)大小,指定两个关键帧之间的最大帧数。

  6. max_b_frames: 最大B帧数,影响编码的延迟和质量。

  7. refs: 编码过程中参考帧的数量。

  8. sample_rate: 音频采样率。

  9. channels: 音频通道数。

  10. frame_size: 每个音频帧的大小。

  11. bit_rate: 音频比特率。

  12. profile: 编码器的配置文件,影响编码质量和复杂性。

#define FF_PROFILE_UNKNOWN -99
#define FF_PROFILE_RESERVED -100

#define FF_PROFILE_AAC_MAIN 0
#define FF_PROFILE_AAC_LOW  1
#define FF_PROFILE_AAC_SSR  2
#define FF_PROFILE_AAC_LTP  3
#define FF_PROFILE_AAC_HE   4
#define FF_PROFILE_AAC_HE_V2 28
#define FF_PROFILE_AAC_LD   22
#define FF_PROFILE_AAC_ELD  38
#define FF_PROFILE_MPEG2_AAC_LOW 128
#define FF_PROFILE_MPEG2_AAC_HE  131

#define FF_PROFILE_DNXHD         0
#define FF_PROFILE_DNXHR_LB      1
#define FF_PROFILE_DNXHR_SQ      2
#define FF_PROFILE_DNXHR_HQ      3
#define FF_PROFILE_DNXHR_HQX     4
#define FF_PROFILE_DNXHR_444     5

#define FF_PROFILE_DTS<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值