1、以解析的结果为参数创建输入输出
-
在解析命令行之后,ffmpeg_parse_options()调用open_files()分别打开输入文件和输出文件。
-
OptionGroupList中的每一个OptionGroup元素包含一个文件项,包括文件名及选项。open_files()遍历每个OptionGroup,用它作为选项调用open_input_file()或open_output_file()。
2、InputStream
-
在open_input_file()中创建IputStream。
-
open_input_file()调用avformat_open_input()解析输入文件,得到一个AVFormatContext实例,其中包含AVStream信息。open_input_file()还调用avformat_find_stream_info()得到更准确的信息。这部分和在ffplay中的处理几乎相同。唯一不同的是,ffplay只处理一个AVStream,而ffmpeg处理多个。
-
这里确定demuxer为ff_mov_demuxer,确定decoder为ff_h264_decoder。
-
-
之后open_input_file()一对一创建InputStream来容纳AVStream,并保存到input_streams[]列表中。Input_streams[]是ffmpeg转换过程的输入项。 d)同时还创建InputFile容纳AVFormatContext,并保存在input_files[]列表中。
3、OutputStream
-
在open_output_file()中创建OutputStream。