天天看点

ffmepg学习

为了统一管理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

继续阅读