Я объединил 9 картинок одинакового размера 320х562 каждая. Они помещаются в одну горизонтальную строку, что приводит к файлу размером 2880x562.
Теперь я хочу сделать пустой экран размером 320х562 в качестве фона и переместить этот большой плоский файл справа налево в качестве наложения, чтобы создать эффект скольжения.
Это команда, которую я использовал после небольшого эксперимента:
ffmpeg -loop 1 -i result.jpg -filter_complex "nullsrc=size=320x562 [background];[0:v] setpts=PTS-STARTPTS [catalog]; [background][catalog] overlay=shortest=1:x='if(gte(t,4)*lte(x, 2880), -(t-4)*165)'" -t 24 -y out.mp4
Он помещает наложенное изображение в ту же позицию с фоном, что и начальная точка.
Хотя похоже, что он делает то, что хотел, у меня возникают проблемы с пониманием выражений, используемых для вычисления значения X
наложения.
Я хотел, чтобы наложение начало плавать там, где
t>4
иx<=2560
, поэтому, даже еслиt
увеличивается, слайд должен остановиться там, где верхняя правая позиция наложения совпадает с верхней правой стороной фона. Сроки, кажется, работают, но ограничение позиции - нет. Как я могу ссылаться на текущийX
?Имея ошибку о
-(t-4)*144
части выражения. Общая продолжительность составляет 24. Оверлей начинает скользить через 4 секунды. Итак, видео должно показывать скольжение9 * 320
пикселей (2880) за 20 секунд. Но это дает 144, а результат 2880/20 делает наложение исчерпанным примерно через ~ 22 секунды, и после этого появляются некоторые пиксели мусора. Каков наилучший способ завершить наложение, когда оно заканчивается?