[机翻文档4]了解 FFmpeg 过滤器的基础知识以及 ShanaEncoder 的视频调整大小选项
在本文中,我们将了解 Shana 如何通过 ShanaEncoder 快速设置(F6) 中的视频大小更改选项配置 FFmpeg 过滤器以便用户轻松使用。
在开始之前,我们先来解释一下 FFmpeg 中一些与宽高比相关的术语。在 Shana 的 “视频调整大小” ⇒ “更改宽高比” 中,如果选择 “信箱” 或 “裁剪” ,你会看到名为 SAR 和 DAR 的选项。它们的含义如下:
SAR = 样本长宽比 = 像素长宽比 (PAR)
DAR = 显示宽高比
换句话说,SAR 是构成图像像素的长宽比,而 DAR 是图像的屏幕显示比例。由于除非特殊情况 ,大多数图像的 SAR 都为 1,因此我们通常所说的比例指的是 DAR,即屏幕比例 。通常,4:3、16:9、1.85:1 或 2.35:1 指的是 DAR。
但是,如果以相同的宽高比播放宽 720 像素、高 480 像素的视频,而不是宽 640 像素、高 480 像素的视频,则该视频的 SAR 将不为 1,而是一个小于 1 的值,宽度小于高度。这种改变像素比以匹配屏幕显示比例的过程称为变形 。
调整视频尺寸分具体情况解释如下:
情况 :将宽高比约为 2.35:1(宽 1920 和高 800)的电影图像的分辨率改变(缩小)为宽高比为 1280,同时保持宽高比不变。
在 FFmpeg 中 ,要在保持宽高比不变的情况下更改分辨率,可以指定一侧(宽度或高度)的像素数,然后将另一侧设置为 '-1' 。当然,在 Shana 中也可以这样做。
Shana 在“视频尺寸更改”部分下提供了一个名为 “宽高比更改” 的子选项,其中包含三个选项。让我们来看看 Shana 如何根据这三个选项调整滤镜设置,并看看最终效果如何。
■ 比率变化:未使用

在 Shana 的快速设置中选择并应用上述内容后,按 F7 打开滤镜设置窗口,将出现如下图所示。

我们选择的尺寸选项设置会作为名为 scale 的滤镜的参数设置输入。此外,我们选择作为调整大小滤镜的双三次滤镜会作为 scale 滤镜的选项 flags 的设置输入。
( 比例尺正下方的 setsar=1/1 表示 SAR 保留为 1:1。在大多数情况下,可以省略它。)
过滤器之间以冒号(:)分隔, 如 option1=设置值 : option2=设置值 : option3=设置值等。 若省略“ option= ”部分,仅显示设置值,则自动按照过滤器选项的顺序分配 。
也就是上面的比例过滤选项设置,
1280:-1:flags=bicubic
银
w=1280:h=-1:flags=bicubic
含义与(且 w 与 width 相同, h 与 height 相同)相同
因此,上面的缩放滤镜设置意味着分辨率将更改为保留原始像素比的大小,宽度和高度为 1280 像素,但使用双三次算法。
实际输入到 FFmpeg 中时 ,过滤器之间的分隔符是逗号 (,),过滤器之间没有空格 。您可以通过打开参数窗口( F8 )来检查过滤器设置窗口中的上述配置如何作为实际命令输入,如下所示。

如果您以这种方式应用过滤器集并实际对其进行编码,您将获得以下结果。

■ 更改宽高比:信箱

如果像上面那样选择信箱,并将信箱的参考帧设置为 16:9 比例,则过滤器设置窗口将显示

可以看到, scale 下添加了一个名为 shanapad 的滤镜,如图所示。这个 shanapad 滤镜是对 FFmpeg 默认 pad 滤镜的修改,其修改方式是 ShanaEncoder 独有的。它简化了原始 pad 的复杂选项。(因此,要在实际的 FFmpeg 中应用它,必须对其进行修改以适应 pad 滤镜。)
上述滤镜设置与设置 1 相同,会创建一个宽高比为 16:9 的黑框(信箱模式),并将分辨率降低的视频放置在其上方。应用后的效果如下。

原始的 2.35 比 1 图像比 16 比 9 图像更宽,因此顶部和底部有黑边(信箱)。
■ 变化率:Cut
这是您需要格外小心的选项。如果您尝试裁剪水平拉长的电影视频以适应 16:9 的宽高比,不留黑边,并将宽度调整为 1280,您最终可能会选择下面的选项。

如果您设置并应用了这些设置,您可能会感到失望,因为预期的结果并未出现。这是由于过滤器执行优先级造成的。
正如 “理解 FFmpeg 命令结构和 ShanaEncoder 操作”中所述, FFmpeg 中过滤器的顺序至关重要。 先到达的过滤器总是会被优先处理 。在 Shana 中,如果您按照上图所示设置了快速设置,则实际的过滤器设置将如下所示。

Shanacrop 滤镜是 FFmpeg crop 滤镜的修改版本,用于裁剪屏幕,它位于 scale 滤镜的下方(之后) 。这将导致视频
1)首先更改分辨率
2) 改变分辨率(1280 像素宽)的视频被裁剪以适应 16:9 的比例。
成功了。应用结果如下。

这意味着您将获得比所需的 1280 水平尺寸更小的图像。
有两种方法可以纠正这个问题。
将 shanacrop 放置在比例滤镜上方 (即前面),以便您先裁剪( shanacrop ),然后调整分辨率以适应宽度( scale )。
右键单击 ShanaEncoder 文件列表⇒ 通过部分设置/裁剪菜单应用屏幕裁剪 ,并在快速设置中更改视频大小但选择更改比例:不要使用 。
第二种方法是利用 ShanaEncoder 程序配置中部分设置/切割优先于其他过滤器这一事实。
□ 其他须知事项
几乎所有滤镜都以原始的、未压缩/解压缩的数据作为输入和输出。因此, 滤镜处理只能在视频解码后进行 ,这使得滤镜处理与流复制不兼容 。因此,诸如“不重新编码而仅裁剪黑边(信箱效果)”或“不重新编码而旋转或翻转屏幕”之类的任务是不可能的。
※ 作为例外,mp4 等特殊容器格式可以仅使用元信息(旋转)来旋转屏幕,但如果播放器忽略元信息,则可能无法正常工作。
作为参考,当分辨率没有大的变化或分辨率降低时,应用于缩放的调整大小过滤器是双三次或双线性的 , 而当分辨率发生大的变化时,兰克索斯或样条函数是速度方面最有效的算法。
在本文中,我们将了解 Shana 如何通过 ShanaEncoder 快速设置(F6) 中的视频大小更改选项配置 FFmpeg 过滤器以便用户轻松使用。
在开始之前,我们先来解释一下 FFmpeg 中一些与宽高比相关的术语。在 Shana 的 “视频调整大小” ⇒ “更改宽高比” 中,如果选择 “信箱” 或 “裁剪” ,你会看到名为 SAR 和 DAR 的选项。它们的含义如下:
SAR = 样本长宽比 = 像素长宽比 (PAR)
DAR = 显示宽高比
换句话说,SAR 是构成图像像素的长宽比,而 DAR 是图像的屏幕显示比例。由于除非特殊情况 ,大多数图像的 SAR 都为 1,因此我们通常所说的比例指的是 DAR,即屏幕比例 。通常,4:3、16:9、1.85:1 或 2.35:1 指的是 DAR。
但是,如果以相同的宽高比播放宽 720 像素、高 480 像素的视频,而不是宽 640 像素、高 480 像素的视频,则该视频的 SAR 将不为 1,而是一个小于 1 的值,宽度小于高度。这种改变像素比以匹配屏幕显示比例的过程称为变形 。
调整视频尺寸分具体情况解释如下:
情况 :将宽高比约为 2.35:1(宽 1920 和高 800)的电影图像的分辨率改变(缩小)为宽高比为 1280,同时保持宽高比不变。
在 FFmpeg 中 ,要在保持宽高比不变的情况下更改分辨率,可以指定一侧(宽度或高度)的像素数,然后将另一侧设置为 '-1' 。当然,在 Shana 中也可以这样做。
Shana 在“视频尺寸更改”部分下提供了一个名为 “宽高比更改” 的子选项,其中包含三个选项。让我们来看看 Shana 如何根据这三个选项调整滤镜设置,并看看最终效果如何。
■ 比率变化:未使用

在 Shana 的快速设置中选择并应用上述内容后,按 F7 打开滤镜设置窗口,将出现如下图所示。

我们选择的尺寸选项设置会作为名为 scale 的滤镜的参数设置输入。此外,我们选择作为调整大小滤镜的双三次滤镜会作为 scale 滤镜的选项 flags 的设置输入。
( 比例尺正下方的 setsar=1/1 表示 SAR 保留为 1:1。在大多数情况下,可以省略它。)
过滤器之间以冒号(:)分隔, 如 option1=设置值 : option2=设置值 : option3=设置值等。 若省略“ option= ”部分,仅显示设置值,则自动按照过滤器选项的顺序分配 。
也就是上面的比例过滤选项设置,
1280:-1:flags=bicubic
银
w=1280:h=-1:flags=bicubic
含义与(且 w 与 width 相同, h 与 height 相同)相同
因此,上面的缩放滤镜设置意味着分辨率将更改为保留原始像素比的大小,宽度和高度为 1280 像素,但使用双三次算法。
实际输入到 FFmpeg 中时 ,过滤器之间的分隔符是逗号 (,),过滤器之间没有空格 。您可以通过打开参数窗口( F8 )来检查过滤器设置窗口中的上述配置如何作为实际命令输入,如下所示。
如果您以这种方式应用过滤器集并实际对其进行编码,您将获得以下结果。

■ 更改宽高比:信箱

如果像上面那样选择信箱,并将信箱的参考帧设置为 16:9 比例,则过滤器设置窗口将显示

可以看到, scale 下添加了一个名为 shanapad 的滤镜,如图所示。这个 shanapad 滤镜是对 FFmpeg 默认 pad 滤镜的修改,其修改方式是 ShanaEncoder 独有的。它简化了原始 pad 的复杂选项。(因此,要在实际的 FFmpeg 中应用它,必须对其进行修改以适应 pad 滤镜。)
上述滤镜设置与设置 1 相同,会创建一个宽高比为 16:9 的黑框(信箱模式),并将分辨率降低的视频放置在其上方。应用后的效果如下。

原始的 2.35 比 1 图像比 16 比 9 图像更宽,因此顶部和底部有黑边(信箱)。
■ 变化率:Cut
这是您需要格外小心的选项。如果您尝试裁剪水平拉长的电影视频以适应 16:9 的宽高比,不留黑边,并将宽度调整为 1280,您最终可能会选择下面的选项。

如果您设置并应用了这些设置,您可能会感到失望,因为预期的结果并未出现。这是由于过滤器执行优先级造成的。
正如 “理解 FFmpeg 命令结构和 ShanaEncoder 操作”中所述, FFmpeg 中过滤器的顺序至关重要。 先到达的过滤器总是会被优先处理 。在 Shana 中,如果您按照上图所示设置了快速设置,则实际的过滤器设置将如下所示。

Shanacrop 滤镜是 FFmpeg crop 滤镜的修改版本,用于裁剪屏幕,它位于 scale 滤镜的下方(之后) 。这将导致视频
1)首先更改分辨率
2) 改变分辨率(1280 像素宽)的视频被裁剪以适应 16:9 的比例。
成功了。应用结果如下。

这意味着您将获得比所需的 1280 水平尺寸更小的图像。
有两种方法可以纠正这个问题。
将 shanacrop 放置在比例滤镜上方 (即前面),以便您先裁剪( shanacrop ),然后调整分辨率以适应宽度( scale )。
右键单击 ShanaEncoder 文件列表⇒ 通过部分设置/裁剪菜单应用屏幕裁剪 ,并在快速设置中更改视频大小但选择更改比例:不要使用 。
第二种方法是利用 ShanaEncoder 程序配置中部分设置/切割优先于其他过滤器这一事实。
□ 其他须知事项
几乎所有滤镜都以原始的、未压缩/解压缩的数据作为输入和输出。因此, 滤镜处理只能在视频解码后进行 ,这使得滤镜处理与流复制不兼容 。因此,诸如“不重新编码而仅裁剪黑边(信箱效果)”或“不重新编码而旋转或翻转屏幕”之类的任务是不可能的。
※ 作为例外,mp4 等特殊容器格式可以仅使用元信息(旋转)来旋转屏幕,但如果播放器忽略元信息,则可能无法正常工作。
作为参考,当分辨率没有大的变化或分辨率降低时,应用于缩放的调整大小过滤器是双三次或双线性的 , 而当分辨率发生大的变化时,兰克索斯或样条函数是速度方面最有效的算法。









