FFmpeg 中的 [x] 是什么意思

FFmpeg 中的 [x] 是什么意思
ffmpeg -ss 4.5 -t 3.9 -i input.mp4 -vf "fps=18,scale=360:-2:flags=lanczos,palettegen" palette.png

ffmpeg -ss 4.5 -t 3.9 -i input.mp4 -i palette.png -filter_complex "fps=18,scale=360:-2:flags=lanczos[x];[x][1:v]palett‎euse" output.gif

我用这个命令制作了一个gif,但我不知道是什么[x];[x][1:v]意思。

这是怎么回事?

答案1

[x]只是赋予过滤器输出的名称。

请阅读相应的文件条目还有关于链接标签

通常,简单过滤器会采用一个或多个过滤器并将它们放入过滤器链中。您的第一个命令就是这种情况。

你有一个复杂的第二个命令中的过滤器,其中可以将多个过滤器链组合成一个过滤器图,因为您正在处理多个输入流。第一个链将过滤器应用于fpsscale一个输入视频,第二个链将paletteuse过滤器应用于第一个过滤器链的输出和第二个输入图像。

每个过滤器链可以有零个或多个输入,以及零个或多个输出。在复杂的过滤器中,您通常必须告诉ffmpeg每个过滤器链的这些输入和输出是什么。这就是 的作用[x]

基本上,表示,和过滤器链[x]的输出称为。稍后,它可以重新用作过滤器链的输入。您不必使用;您也可以使用任何其他名称——更具描述性的名称会更有意义,例如。fpsscalexpaletteusexscaled

答案2

它们是链接标签。

来自文档

过滤器的名称和参数前面和后面可以随意添加链接标签列表。链接标签允许命名链接并将其与过滤器输出或输入板关联。

因此,在 中scale=360:-2:flags=lanczos[x]x是分配给比例过滤器输出的标签。

在 中[x][1:v]palett‎euse[x]表示将比例过滤器的输出作为第一个输入提供给 paletteuse,[1:v]表示将第二个输入的第一个视频流(palette.png)提供给 paletteuse。

相关内容