FFmpeg合成流程
示例本程序会⽣成⼀个合成的⾳频和视频流,并将它们编码和封装输出到输出⽂件,输出格式是根据⽂件
扩展名⾃动猜测的。
示例的流程图如下所示。
ffmpeg 的 Mux 主要分为 三步操作:
avformat_write_header : 写⽂件头
av_write_frame/av_interleaved_write_frame: 写packet
av_write_trailer : 写⽂件尾
核心函数
1.avformat_alloc_output_context2
、
int avformat_alloc_output_context2(AVFormatContext **ctx, const AVOutputFormat *oformat,
const char *format_name, const char *filename);
函数参数的介绍:
ctx:需要创建的context,返回NULL表示失败。
oformat:指定对应的AVOutputFormat,如果不指定,可以通过后面format_name、filename两个参数进行指定,让ffmpeg自己推断。
format_name: 指定音视频的格式,比如“flv”,“mpeg”等,如果设置为NULL,则由filename进行指定,让ffmpeg自己推断。
filename: 指定视频文件的路径,如果oformat、format_name为NULL,则ffmpeg内部根据filename后缀名选择合适的复用器,⽐如xxx.flv则使用flv复用器。