Использование условных фильтров в FFmpeg

Это поразило меня, когда я недавно наткнулся на что-то новое о FFmpeg, несмотря на то, что использовал его в течение многих лет — тот факт, что он поставляется из коробки с расширенными условными операторами, такими как if заявления и lt/gt для фильтров. Для меня это должна быть самая недооцененная функция, или, по крайней мере, было бы, если бы в документации упоминалось что-нибудь о них и о том, как они работали.

Я хочу использовать их в своих сценариях FFmpeg для разумного масштабирования видео в зависимости от их высоты: если высота видео меньше 720 пикселей, масштабировать его до -1:720 (то есть высоту 720 и пропорциональную ширину, которая сохраняет его соотношение сторон), и оставить его без изменений, если оно 720 пикселей или больше. Что бы scale фильтр, чтобы сделать это с if а также lt/gt выглядит как?

1 ответ
1

Вы можете использовать Максимум:

max(x, y)

Вернуть максимум между x а также y.

Пример:

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

  • +1 для простоты, у меня было ощущение max мог бы делать то, что хочу, но я не думал, что это будет так просто. Если бы я хотел заменить -1 с $width переменной в моем сценарии, есть ли способ гарантировать, что $width действует только тогда, когда правая сторона (т.е. высота) также увеличена?

    — Хашим Азиз

    19 часов назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *