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

Как сделать слайдшоу без деформации картинок?

тут crop выдает ошибку в случаях когда картинки не подпадают под размер
ffmpeg -framerate 1/1 -pattern_type glob -y -i '*.jpg' -aspect 9:16 -vf crop=1080:1920 out.mp4

тут scale деформирует картинки
ffmpeg -framerate 1/1 -pattern_type glob -y -i '*.jpg' -vf "scale=1080:1920,format=yuv420p" \ out.mp4
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@R0_none Автор вопроса
ни ноты без банкноты
для меня решением стали

// склеить изображения в формате 1200:1920 и обрезать, дать каждому изображению по 0.7 секунды.
ffmpeg -framerate 1/0.7 -pattern_type glob -y -i '*.jpg' -vf 'scale=1200:1920:force_original_aspect_ratio=increase,crop=1150:1900,setsar=1' -c:v libx264 -crf 14 -r 25 -pix_fmt yuv420p -shortest out2.mp4

// склеить изображения в формате 1200:1920 и уместить в рамках за счет уменьшения, дать каждому изображению по 0.7 секунды.
ffmpeg -framerate 1/0.7 -pattern_type glob -y -i '*.jpg' -vf 'scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1' -c:v libx264 -crf 14 -r 25 -pix_fmt yuv420p -shortest out1.mp4
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
фильтр scale впишет в заданный размер, сохраняя force_original_aspect_ratio пропорции;
фильтр pad дорисует, если не хватает, до заданного размера по краям сплошной цвет (чёрный, по умолчанию).

Пример рабочего кода:
ffmpeg -framerate 1/10 -i img%3d.png -i audio.wav \
       -vf 'scale=3840:2880:force_original_aspect_ratio=decrease,pad=3840:2880:(ow-iw)/2:(oh-ih)/2,setsar=1' \
       -c:v libx264 -crf 14 -r 25 -pix_fmt yuv420p -shortest output.mp4
via
Ответ написан
Ваш ответ на вопрос

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

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