ffmpeg视频音频转码工具

一.ffmpeg详细描述

1.ffmpeg详细转码过程

 

 _______ ______________
| | | |
| 输入| 分路器| 编码数据| 解码器
| 文件| ---------> | 数据包| ----- +
| _______ | | ______________ | |
                                           v
                                       _________
                                      | |
                                      | 解码|
                                      | 框架|
                                      | _________ |
 ________ ______________ |
| | | | |
| 输出| <-------- | 编码数据| <---- +
| 文件| muxer | 数据包| 编码器
| ________ | | ______________ |

| | | |
| 输入| 分路器| 编码数据| 解码器
| 文件| ---------> | 数据包| ----- +
| _______ | | ______________ | |
                                           v
                                       _________
                                      | |
                                      | 解码|
                                      | 框架|
                                      | _________ |
 ________ ______________ |
| | | | |
| 输出| <-------- | 编码数据| <---- +
| 文件| muxer | 数据包| 编码器
| ________ | | ______________ |

ffmpeg调用libavformat库(包含demuxers)来读取输入文件并获取包含编码数据的数据包。当有多个输入文件时,ffmpeg通过追踪任何活动输入流上的最低时间戳,尝试保持它们的同步。

然后将编码的数据包传送给解码器。解码器产生未压缩的帧(原始视频/ PCM音频/ ...),可以通过滤波进一步处理(见下一节)。在过滤之后,帧被传递给编码器,编码器对其进行编码并输出编码的数据包。最后,这些传递给复用器,将编码的数据包写入输出文件。

 

2.过滤

编码之前,ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧,几个链式过滤器形成一个过滤器图形。ffmpeg区分两种类型的过滤器图:简单和复杂。

A.简单的过滤图

 

 _________ ______________
| | | |
| 解码| | 编码数据|
| 框架| \ _ | 数据包|
| _________ | \ / || ______________ |
             \ __________ /
  简单_ \ || | /编码器
  filtergraph | 过滤| /
                | 框架|
                | __________ |
| | | |
| 解码| | 编码数据|
| 框架| \ _ | 数据包|
| _________ | \ / || ______________ |
             \ __________ /
  简单_ \ || | /编码器
  filtergraph | 过滤| /
                | 框架|
                | __________ |

简单的过滤图是使用每个流配置的 -过滤 选项与(-vf 和-af视频和音频别名)。一个简单的视频filtergraph可以看起来像这样子的例子

 

 

 _______ _____________ _______ ________
| | | | | | | |
| 输入| ---> | 去隔行| ---> | 规模| ---> | 输出|
| _______ | | _____________ | | _______ | | ________ |
| | | | | | | |
| 输入| ---> | 去隔行| ---> | 规模| ---> | 输出|
| _______ | | _____________ | | _______ | | ________ |

 

B.复杂的过滤图         

 

    复杂的过滤器图是哪些不能简单描述为应用于一个流的线性处理链的过滤图。例如,当图形有多个输入和/或输出,或者当输出流类型和输入不同时,这种情况,可以用下图表示:           

    

 _________
| |
| 输入0 | \ __________
| _________ | \ | |
             \ _________ / | 输出0 |
              \ | | / | __________ |
 _________ \ | 复杂| /
| | | | /
| 输入1 | ----> | 过滤| \
| _________ | | | \ __________
               / | 图| \ | |
              / | | \ | 输出1 |
 _________ / | _________ | | __________ |
| | /
| 输入2 | /
| _________ |
| |
| 输入0 | \ __________
| _________ | \ | |
             \ _________ / | 输出0 |
              \ | | / | __________ |
 _________ \ | 复杂| /
| | | | /
| 输入1 | ----> | 过滤| \
| _________ | | | \ __________
               / | 图| \ | |
              / | | \ | 输出1 |
 _________ / | _________ | | __________ |
| | /
| 输入2 | /
| _________ |

                               

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值