在 FFmpeg 中使用条件过滤器

在 FFmpeg 中使用条件过滤器

尽管我已经使用了 FFmpeg 多年,但最近我发现了一些新东西,这让我大吃一惊——它开箱即用,带有高级条件,例如用于过滤器的if语句和lt/ gt。对我来说,这一定是它最被低估的功能,或者至少如果文档中提到了它们以及它们的工作原理的话,它就是最被低估的功能。

我想在我的 FFmpeg 脚本中利用它们,根据视频的高度智能地放大视频:如果视频的高度小于 720 像素,则将其放大到-1:720(即高度为 720 像素,宽度成比例,保持其纵横比),如果视频的高度为 720 像素或更大,则保持不变。使用什么scale过滤器可以做到这一点,if并且lt/gt看起来会是什么样子?

答案1

您可以使用最大限度

max(x, y)
x返回和 之间的最大值y

例子:

ffmpeg -i input -vf "scale=-1:'max(720,ih)'" output

如果我想在脚本中用变量替换-1$width有没有办法确保$width仅当右侧(即高度)也被放大时才会起作用?

使用示例如果

ffmpeg -i input -vf "scale='if(lt(ih,720),$width,iw)':'max(720,ih)'" output

相关内容