ffmpeg中有很多重要的结构体和模块,今天主要学习的结构体是AVOutputFormat(libavformat/avformat.h),
AVOutputFormat 结构体主要用于muxer,是音视频文件的一个封装器;
typedef struct AVOutputFormat {
const char *name; //格式名列表,简短的名称,用于通过此名称来找到此muxer解封装器
const char *long_name; //长名称,用于仔细描述此muxer解封装器
const char *mime_type; //一个模拟类型列表,在probe时check匹配的类型
const char *extensions; //如果定义了extensions就不会再检测格式名,通常不定义
enum AVCodecID audio_codec; //音频编解码器ID
enum AVCodecID video_codec; //视频编解码器ID
enum AVCodecID subtitle_codec; //subtitle编解码器ID
/**
* 可用标志 flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
*/
int flags;
const struct AVCodecTag * const *codec_tag;
AVOutputFormat 结构体主要用于muxer,是音视频文件的一个封装器;
typedef struct AVOutputFormat {
const char *name; //格式名列表,简短的名称,用于通过此名称来找到此muxer解封装器
const char *long_name; //长名称,用于仔细描述此muxer解封装器
const char *mime_type; //一个模拟类型列表,在probe时check匹配的类型
const char *extensions; //如果定义了extensions就不会再检测格式名,通常不定义
enum AVCodecID audio_codec; //音频编解码器ID
enum AVCodecID video_codec; //视频编解码器ID
enum AVCodecID subtitle_codec; //subtitle编解码器ID
/**
* 可用标志 flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
*/
int flags;
const struct AVCodecTag * const *codec_tag;