ffmpeg dedot 过滤器:任何示例或文档

ffmpeg dedot 过滤器:任何示例或文档

我有一些视频显示“点爬行”。我相信其他人也一样。有一个 ffmpeg 过滤器“dotcrawl”,应该很有用。我的 ffmpeg 副本内置了这个过滤器。问题是,没有示例,文档也不够充分。文档可以在以下位置找到:

https://ffmpeg.org/ffmpeg-filters.html#dedot

但它只说:

11.59 德多特

减少视频中的串亮度(点爬行)和串色(彩虹)。

它接受以下选项:

Set mode of operation. Can be combination of dotcrawl for cross-luminance reduction and/or rainbows for cross-color reduction.

Set spatial luma threshold. Lower values increases reduction of cross-luminance.

tl

Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.

Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.

电脑断层扫描

Set temporal chroma threshold. Lower values increases reduction of cross-color. 

它没有给出值的范围,也没有说明如何使用多个变量。

通过实验我发现

-vf“dedot=dotcrawl”

被接受:但是

-vf“dedot=dotcrawl:t1=1”

被拒绝。这是适用于许多其他过滤器的语法,例如

“eq=亮度=0.1:对比度=1.25”

等等。

我找到的其他文档是:

https://www.aquilinestudios.org/avsfilters/dotcrawl.html

讨论了 DeDot 过滤器,但参数与 ffmpeg 文档中的不同。

源代码显然位于:

https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_dedot.c

但由于源代码不包含任何注释,因此它并不能完全说明问题。

(我当了多年的开发人员和项目经理,我永远不会接受这样的事情出现在项目中。但我离题了......)

有人能解释一下如何使用这个过滤器,以及参数的含义吗?正如我所说,我相信如果有文档记录的话,这对很多人来说都会很有用。

谢谢。

答案1

请注意,在您的示例中,您使用的是 t1,而不是 tl。您需要小写的“L”,而不是数字 1。

使用命令可以得到更多信息

ffmpeg -h filter=dedot

输出为:

Filter dedot
  Reduce cross-luminance and cross-color.
    slice threading supported
    Inputs:
       #0: default (video)
    Outputs:
       #0: default (video)
dedot AVOptions:
   m                 <flags>      ..FV....... set filtering mode (default dotcrawl+rainbows)
     dotcrawl                     ..FV.......
     rainbows                     ..FV.......
   lt                <float>      ..FV....... set spatial luma threshold (from 0 to 1) (default 0.079)
   tl                <float>      ..FV....... set tolerance for temporal luma (from 0 to 1) (default 0.079)
   tc                <float>      ..FV....... set tolerance for chroma temporal variation (from 0 to 1) (default 0.058)
   ct                <float>      ..FV....... set temporal chroma threshold (from 0 to 1) (default 0.019)

This filter has support for timeline through the 'enable' option.

因此,这给出了每个参数的范围和默认值。有关 dedot 过滤器的更好的文档和示例位于 AviSynth.nl wiki 中。

http://avisynth.nl/index.php/DeDot

但是本文档需要从 ffmpeg 到 Avisynth 值进行一些转换。

ffmpeg, value* avisynth max= avisynth val, avisynth name

lt      .079   255           20            luma2d
tl      .079   255           20            lumaT
tc      .058   255           15            chromaT1
ct      .015   255            5            chromaT2

有趣的是,dedot 过滤器的 ffmpeg git 源代码在对帧进行操作之前将浮点值转换回 avisynth 值(并使用 avisynth 变量名!)。

现在来看看使用 dedot 过滤器的一些 ffmpeg 示例。常见的开头是

ffmpeg.exe -hide_banner -y -ss 60 -t 30 -i intest.mp4 -map v:0

内容如下:抑制 ffmpeg 横幅,覆盖输出,从 60 秒开始编码,并对输入 intest.mp4 的 30 秒进行编码。选择第一个视频轨道。
然后添加 dedot 部分:

 -vf dedot                         # dedot both rainbows and dot crawl using default values
 -vf dedot=dotcrawl:tc=0.0:ct=1.0  # dedot reducing dot crawl only
 -vf dedot=rainbows:lt=1.0:tl=0.0  # dedot reducing rainbows only

接下来是例如

 -c:v libx264 -crf 21 -map a:0 -c:a copy outtest.x264.mkv

内容如下:使用 libx264 视频编码器以恒定速率因子 21 对输入进行转码,并选择并将第一个音轨复制到 outtest.x264.mkv 文件中。

完整的一行是

ffmpeg.exe -hide_banner -y -ss 180 -t 30 -i intest.mp4 -map v:0 -vf dedot -c:v libx264 -crf 21 -map a:0 -c:a copy outtest.x264.mkv

相关内容