@R0_none
ни ноты без банкноты

Как предотвратить деформацию картинок в ролике?

есть папка с картинками и аудио трек на 9+-минут

нужно
1) склеить картинки в видео ряд
2) наложить музыку
3) каждая картинка должна получить секунду присутствия на экране или меньше

вроде все сработало через эту комманду

ffmpeg -framerate 10 -pattern_type glob -i 'ChatExport_2022-12-07/photos/*.jpg' -i 1.mp3 -c:v libx264 -t 10:00 -pix_fmt yuv1080p out.mp4

но, так как картинки разных размеров, то некоторые из них разтянуты и деформированы.

из этого у меня 2 вопроса

1. как сделать так чтобы картинки не деформировались и помещались в формате 1900х1200 или 16:8?
2. как сделать так, чтобы широкие картинки обрезало под вертикальный формат для просмотра на смартфоне?
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Самый простой вариант - подготовить картинки заранее обрезав и качественно смасштабировав их под нужный формат кадра.
Можно воспользоваться вот этой распространенной утилитой https://imagemagick.org
Или любой аналогичной для командной строки.
Фактически вам нужен ресайз под конкретный размер по вертикали. а затем кроп под конкретную ширину, однако так у вас может отрезаться часть значимого сюжета.
Можно слишком широкие картинки (типа 16:9) снабдить предварительно сверху и снизу небольшими полями, чтобы по бокам отрезалось меньше.
Получить рамеры картинки поможет утилита exiftool.
Ещё цвет полей картинки можно выбрать близким к фону каринки на краях. Для этого можно сильно размыть картинку по гауссу и взять несколько проб цвета из верхней чсти изображения и из нижней. Усреднить и получится цвет полей, которые не будут сильно бросаться в глаза. Ещё можно размыть верх и низ картинки по маске и смешать с фоном.
Для всего этого лучше, конечно, не на баше скрипт писать, а на питоне с использованием библиотеки PIL (pillow).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы