FFMPEG 3.4.2 - ffmpeg源代码分析 (二)

本文深入分析FFmpeg 3.4.2的源代码,讲解如何创建输入输出、处理InputStream和OutputStream,构建FilterGraph,以及连接流和过滤器。内容涵盖open_files()、avformat_open_input()、avformat_find_stream_info()、open_output_file()、av_guess_format()、encoder选择、FilterGraph的创建与配置,以及ffmpeg转换过程中的流处理细节。
摘要由CSDN通过智能技术生成

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值