AVCodecContext是包含变量较多的结构体。


enum AVMediaType codec_type:                编解码器的类型(视频,音频...)

struct AVCodec  *codec:                             采用的解码器AVCodec(H.264,MPEG2...)

int bit_rate:

uint8_t *extradata; int extradata_size:         针对特定编码器包含的附加信息(例如对于H.264解码器来说,存储SPS,PPS等)

AVRational time_base:                                根据该参数,可以把PTS转化为实际的时间(单位为秒s)

int width, height:                                          如果是视频的话,代表宽和高

int refs: 运动估计参考帧的个数(H.264的话会有多帧,MPEG2这类的一般就没有了)

int sample_rate:

int channels:                                               声道数(音频)

enum AVSampleFormat sample_fmt:          采样格式

int profile:                                                    型(H.264里面就有,其他编码标准应该也有)

int level:                                                      级(和profile差不太多)


在这里需要注意:AVCodecContext中很多的参数是编码的时候使用的,而不是解码的时候使用的。

其实这些参数都比较容易理解。就不多费篇幅了。在这里看一下以下几个参数:

1.codec_type


编解码器类型有以下几种:

enum AVMediaType {  
///< Usually treated as AVMEDIA_TYPE_DATA  
    AVMEDIA_TYPE_VIDEO,  
    AVMEDIA_TYPE_AUDIO,  
///< Opaque data information usually continuous  
    AVMEDIA_TYPE_SUBTITLE,  
///< Opaque data information usually sparse  
    AVMEDIA_TYPE_NB  
};



2.sample_fmt


在FFMPEG中音频采样格式有以下几种:


AV_SAMPLE_FMT_NONE = -1,  
///< unsigned 8 bits  
///< signed 16 bits  
///< signed 32 bits  
///< float  
///< double  
  
///< unsigned 8 bits, planar  
///< signed 16 bits, planar  
///< signed 32 bits, planar  
///< float, planar  
///< double, planar  
  
///< Number of sample formats. DO NOT USE if linking dynamically  
};



3.profile




在FFMPEG中型有以下几种,可以看出AAC,MPEG2,H.264,VC-1,MPEG4都有型的概念。

#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_DTS         20  
#define FF_PROFILE_DTS_ES      30  
#define FF_PROFILE_DTS_96_24   40  
#define FF_PROFILE_DTS_HD_HRA  50  
#define FF_PROFILE_DTS_HD_MA   60  
  
#define FF_PROFILE_MPEG2_422    0  
#define FF_PROFILE_MPEG2_HIGH   1  
#define FF_PROFILE_MPEG2_SS     2  
#define FF_PROFILE_MPEG2_SNR_SCALABLE  3  
#define FF_PROFILE_MPEG2_MAIN   4  
#define FF_PROFILE_MPEG2_SIMPLE 5  
  
#define FF_PROFILE_H264_CONSTRAINED  (1<<9)  // 8+1; constraint_set1_flag  
#define FF_PROFILE_H264_INTRA        (1<<11) // 8+3; constraint_set3_flag  
  
#define FF_PROFILE_H264_BASELINE             66  
#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)  
#define FF_PROFILE_H264_MAIN                 77  
#define FF_PROFILE_H264_EXTENDED             88  
#define FF_PROFILE_H264_HIGH                 100  
#define FF_PROFILE_H264_HIGH_10              110  
#define FF_PROFILE_H264_HIGH_10_INTRA        (110|FF_PROFILE_H264_INTRA)  
#define FF_PROFILE_H264_HIGH_422             122  
#define FF_PROFILE_H264_HIGH_422_INTRA       (122|FF_PROFILE_H264_INTRA)  
#define FF_PROFILE_H264_HIGH_444             144  
#define FF_PROFILE_H264_HIGH_444_PREDICTIVE  244  
#define FF_PROFILE_H264_HIGH_444_INTRA       (244|FF_PROFILE_H264_INTRA)  
#define FF_PROFILE_H264_CAVLC_444            44  
  
#define FF_PROFILE_VC1_SIMPLE   0  
#define FF_PROFILE_VC1_MAIN     1  
#define FF_PROFILE_VC1_COMPLEX  2  
#define FF_PROFILE_VC1_ADVANCED 3  
  
#define FF_PROFILE_MPEG4_SIMPLE                     0  
#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE            1  
#define FF_PROFILE_MPEG4_CORE                       2  
#define FF_PROFILE_MPEG4_MAIN                       3  
#define FF_PROFILE_MPEG4_N_BIT                      4  
#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE           5  
#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION      6  
#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE     7  
#define FF_PROFILE_MPEG4_HYBRID                     8  
#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME         9  
#define FF_PROFILE_MPEG4_CORE_SCALABLE             10  
#define FF_PROFILE_MPEG4_ADVANCED_CODING           11  
#define FF_PROFILE_MPEG4_ADVANCED_CORE             12  
#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13  
#define FF_PROFILE_MPEG4_SIMPLE_STUDIO             14  
#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE           15