Это поразило меня, когда я недавно наткнулся на что-то новое о 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 для простоты, у меня было ощущение
max
мог бы делать то, что хочу, но я не думал, что это будет так просто. Если бы я хотел заменить-1
с$width
переменной в моем сценарии, есть ли способ гарантировать, что$width
действует только тогда, когда правая сторона (т.е. высота) также увеличена?— Хашим Азиз
19 часов назад