在学习一下ffmpeg滤镜的使用,无奈滤镜种类繁多,并且每一个滤镜其命令行支持的参数也是各种各样,当然网上也可以找到很多关于常用滤镜的参数的解释,既然支持这些参数,那么源码中肯定是有对这些参数进行唯一的解析的,我想肯定有一个官方的解释的,那么怎么查看这些滤镜的参数说明呢?
命令行如下:
#ffmpeg -h filter=XXX 列出xxx滤镜的help说明
比如: 下面对所有支持的选项,都有解释说明。
(使用之前,可以使用 ffmpeg -filters 列出所有支持的滤镜,这个-filters 选项,同样可以追溯到 ffmpeg --help中看到 关于ffmpeg -filters的解释。只是想说明,这些参数用法解释等等都有原始的出处,并且更加全面)
#ffmpeg -h filter=drawtext
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
configuration: --enable-libfreetype
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
Filter drawtext
Draw text on top of video frames using libfreetype library.
Inputs:
#0: default (video)
Outputs:
#0: default (video)
drawtext AVOptions:
fontfile <string> ..FV..... set font file
text <string> ..FV..... set text
textfile <string> ..FV..... set text file
fontcolor <color> ..FV..... set foreground color (default "black")
fontcolor_expr <string> ..FV..... set foreground color expression (default "")
boxcolor <color> ..FV..... set box color (default "white")
bordercolor <color> ..FV..... set border color (default "black")
shadowcolor <color> ..FV..... set shadow color (default "black")
box <boolean> ..FV..... set box (default false)
boxborderw <int> ..FV..... set box border width (from INT_MIN to INT_MAX)
。。。。。篇幅所限,就不全部粘贴了,还有一大串参数
常用:
-formats show available formats
-muxers show available muxers
-demuxers show available demuxers
-devices show available devices
-codecs show available codecs
-decoders show available decoders
-encoders show available encoders
显示一个 解码器的参数说明: #ffmpeg -h decoder=h264
显示一个 编码器的参数说明: #ffmpeg -h encoder=libx264 (前提是要enable了x264哦)
显示一个 解复用器参数说明: #ffmpeg -h demuxer=mp4
显示一个 复用器的参数说明: #ffmpeg -h muxer=mp4
=============================一个简单的分割线=======================================
下面开始从源码层面解释,可以在ffmpeg源码中(我这里是4.1版本)看到:
libavfiler目录下面都是 vf_** 和av_** 顾名思义就是 video filter 和 audio filter,其中还有一个文件 filter_list.c, 此文件在 cofigure的时候,根据具体配置生成, 其内容就是一个全局数组,保存所有的滤镜AVFilter。
每一个 AVFilter,都有它的 description 和内部的 AVOption, 就是对应源码中就有对这些参数的解释:
这个options在ffmpeg 的命令解释到-h时会调用,输出具体的help信息: