为了统一管理muxer的方便,每个的muxer都封装进一个数据结构AVOutputFormat。
即用AVOutputFormat这个结构体来管理muxer,到时候把这一系列的结构体放入一个链表,要找一个muxer就方便了。
在源代码中搜AVOutputFormat,即可找到mp4相关的编码器源文件。movenc.c/h
AVOutputFormat ff_mp4_muxer = {
.name = "mp4",
.long_name = NULL_IF_CONFIG_SMALL("MP4 (MPEG-4 Part 14)"),
.mime_type = "application/mp4",
.extensions = "mp4",
.priv_data_size = sizeof(MOVMuxContext),
.audio_codec = AV_CODEC_ID_AAC,
.video_codec = CONFIG_LIBX264_ENCODER ?
AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4,
.write_header = mov_write_header,
.write_packet = mov_write_packet,
.write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH,
.codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
.priv_class = &mp4_muxer_class,
};
以上转自http://blog.csdn.net/ctroll/article/details/8169396
这里边的video_codec是我想说的,如果配置了x264库,那么视频编码器为h264,否则为mprg-4