為了統一管理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