核心知识:
一、输出媒体文件所需的结构 体:AVOutputFormat,AVFormatContext,AVStream,AVCodec,AVCodecContext,AVFrame,AVPacket(按出现先后 顺序)。
二、AVOutputFormat是输出容器(container)句柄,直接关联文件,但只有句柄远远不够,我们需要设置相关参数 ;AVFormatContext就是容器上下文(用avformat_alloc_context初始化),我们于其设置目标容器文件名,目标 容器句柄,I/O上下文(this->pb);
三、只有上面两个,我们还是不能对相应文件进行写入操作,需要对其进行流化操作,我们用avformat_new_stream( aacFormatCtx, NULL);初始化一个空流,但这时这个Stream还是不能用!因为这是一个真正的空流!里面的数据 指针和流头都还未被初始化,我们需要avformat_write_header(aacFormatCtx, NULL);这次才是真正的生成了可 以用的流。
四、AVCodec这个结构体包含了一个解码器的必要参数,好在ffmpeg为我们提供了简单的接口avcodec_find_encoder ,这样就可以很容易的获取一个编码器(只是相关参数!)。