刘歧:FFmpeg Filter深度应用

本文由OnVideo视频创作云平台联合创始人刘歧分享,深入探讨FFmpeg滤镜的基本原理、使用方法、开发基础及实践案例,包括滤镜的线性处理、常用滤镜如scale、trim等的使用,以及滤镜API的调用和自定义滤镜开发。
摘要由CSDN通过智能技术生成

640?wx_fmt=png


本文来自OnVideo视频创作云平台联合创始人刘歧在LiveVideoStackCon的讲师热身分享,刘歧分享了FFmpeg的基本原理、使用方法及开发方法。在10月19-20日的LiveVideoStackCon 2018上,刘歧还将分享如何通过FFmpeg实现视频版权保护的方法。


文 / 刘歧

整理 / LiveVideoStack

直播回放:

https://www.baijiayun.com/web/playback/index?classid=18081550127330&session_id=201808160&token=UpmOXagOUwZt681rrJ0J_fi3uef2YslR9xPZowdmKaIVnKE7ZcXWwkkNnUrZm8So4_FWYYdehfAKp0fXMnVKLQ


大家好我是刘歧,目前和几个朋友一起创办了视频云创作平台OnVideo,主要负责做一些新功能预研和整体方向把控。


今天主要从四个方面来介绍一下FFmpeg的滤镜深度应用:


1.  Filter基本原理

2.  Filter使用方法

3.  Filter开发基础

4.  Filter开发


一.  Filter基本原理


基本原理的理解可以从以下六点出发:


  1. 线性属性:滤镜是一个线性的属性,是一步接着一步的往下走的,当然也可以有多线程的,但是多线程的实现不是特别好,一般的实现都是通过单线程来线性处理的。

  2. 输入输出标签:滤镜都有输入和输出的标签。

  3. 滤镜名

  4. 滤镜参数:当我们在使用某一类滤镜时,需要知道对应的参数大小,如位置,宽高等。

  5. 内置变量:在使用滤镜时,可以用到它的很多内置变量,如帧率,PTS等,这些变量可以在命令行中使用,在调用API时也会用到。

  6. 压缩前、解压后的YUV/RGB/PCM数据:对数据进行滤镜处理时使用的都是原始数据,也就是未压缩的数据。


640?wx_fmt=png


线性处理图解

 

如上图所示,从滤镜线性处理图中可以看出,对每一个的滤镜处理过程必须要有输入和输出,比如在最后滤镜8的位置没有输出1来承接它的结果,则会报错。另外,如从滤镜1到滤镜2的过程,滤镜1的输出Out可以作为滤镜2的输入In,从滤镜2再往后,滤镜2的输出Out可以分为两部分,分别作为其它滤镜处理的输入。


640?wx_fmt=png


原始数据处理

 

滤镜的处理都是基于原始数据来进行的,比如视频图像的每一帧,当然也包括音频。如上图所示,每一帧可以有前后的多个层,一般情况下是两层,当有多层时,如Frame1是三层,则可以先处理前两层,处理之后合并成一层,再跟另一层一起去做处理。当处理完Frame1后送到编码器进行编码,再依次处理Frame2、Frame3、Frame4,处理完后均送到编码器进行压缩编码为另一个格式,比如H.264。


二.  Filter使用方法


1.  常用滤镜


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值