ffmpeg 中‘cropdetect’过滤器的‘limit’参数如何工作?

ffmpeg 中‘cropdetect’过滤器的‘limit’参数如何工作?

我有许多带有(名义上)黑色边框的视频......我想将黑色边框裁剪掉。

我经常使用“ffmpeg”对视频进行各种操作……我希望能够再次使用该工具来自动进行裁剪……因此,我发现了“cropdetect”过滤器——参见https://ffmpeg.org/ffmpeg-filters.html#cropdetect

虽然我可以使用它来确定“几乎正确”的裁剪值,但我无法使过滤器正常工作,可能是因为我无法理解文档试图描述的有关“限制”参数的内容,即:-

limit: Set higher black value threshold, which can be optionally
specified from nothing (0) to everything (255 for 8-bit based
formats). An intensity value greater to the set value is considered
non-black. It defaults to 24. You can also specify a value between 0.0
and 1.0 which will be scaled depending on the bitdepth of the pixel
format.

我可以确定背景黑色的 RGB/HSV/HSL 值...但是如何使用“limit”参数?它的值如何影响裁剪的“紧密度”?

第二个问题是,如果我将限制值指定为“255”,则“crop=W:H:x:y”输出中会得到负值。这是个问题吗……还是我只是误解了它试图告诉我的内容……?

在 Windows 8 32 位下使用 ffmpeg N-94396-g47b6ca0b02。

我将不胜感激任何指点...谢谢!

答案1

cropdetect 检查每帧的第一个组件(对于 YUV 像素格式输入,是亮度;对于 RGB,通常是 R 平面,但取决于哪个先存储)

限制是阈值。因此,如果限制为 24,并且第一个组件的像素值为 25,则该像素被视为非黑色像素,因此是内容的一部分。

0 的限制意味着将所有值视为内容,那么为什么要运行过滤器呢?同样,8 位输​​入的 255 意味着将所有值视为黑色。同样,为什么要运行过滤器呢?对于 8 位内容,绝对像素值限制的有效范围是 [1-254]。或者,您也可以为规范化值指定 (0-1),即 8 位输入的值 0.4 将转换为 0.4*256 - 1 = 101.4 = 101。

相关内容