尽管我已经使用了 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