Время чтения: 2 мин.
Чтобы создать анимацию, где одна картинка движется по диагонали от левого нижнего угла к верхнему правому углу, и при этом картинка не видна в начале и в конце анимации, можно использовать FFmpeg. Для этого нужно настроить начальную и конечную позиции картинки за пределами экрана, а также плавно изменять её прозрачность.
1. Подготовка изображений
background.jpg— фоновое изображение.foreground.png— изображение, которое будет двигаться (должно поддерживать прозрачность, например, PNG).
2. Команда FFmpeg
ffmpeg \
-loop 1 -i background.jpg \
-loop 1 -i foreground.png \
-filter_complex \
"[1]scale=200:-1,format=rgba[fg]; \
[0][fg]overlay=x='if(between(t,1,9), -w+(t-1)*(W+w)/8, NAN)':y='if(between(t,1,9), H-(t-1)*(H+h)/8, NAN)':enable='between(t,1,9)', \
fade=t=in:st=1:d=1:alpha=1,fade=t=out:st=9:d=1:alpha=1" \
-t 10 -c:v libx264 -pix_fmt yuv420p output.mp43. Разбор команды
-loop 1 -i background.jpg:- Зацикливает фоновое изображение.
-loop 1 -i foreground.png:- Зацикливает движущееся изображение.
[1]scale=200:-1,format=rgba[fg]:- Масштабирует движущееся изображение до ширины 200 пикселей (высота автоматически подстраивается).
format=rgba— сохраняет прозрачность (альфа-канал).overlay=x='if(between(t,1,9), -w+(t-1)*(W+w)/8, NAN)':y='if(between(t,1,9), H-(t-1)*(H+h)/8, NAN)':enable='between(t,1,9)':x='if(between(t,1,9), -w+(t-1)*(W+w)/8, NAN)':between(t,1,9)— движение происходит между 1 и 9 секундами.-w— начальная позиция за пределами экрана (слева).(t-1)*(W+w)/8— движение по горизонтали от левого края к правому.
y='if(between(t,1,9), H-(t-1)*(H+h)/8, NAN)':H— высота фонового изображения.H-(t-1)*(H+h)/8— движение по вертикали от нижнего края к верхнему.
enable='between(t,1,9)'— изображение видимо только между 1 и 9 секундами.fade=t=in:st=1:d=1:alpha=1,fade=t=out:st=9:d=1:alpha=1:fade=t=in:st=1:d=1:alpha=1— плавное появление (fade-in) с 1 по 2 секунду.fade=t=out:st=9:d=1:alpha=1— плавное исчезновение (fade-out) с 9 по 10 секунду.-t 10:- Длительность анимации (10 секунд).
-c:v libx264:- Кодек для кодирования видео (H.264).
-pix_fmt yuv420p:- Формат пикселей для совместимости с большинством устройств.
output.mp4:- Имя выходного файла.
4. Результат
- Картинка начнет движение из левого нижнего угла (за пределами экрана) и закончит в правом верхнем углу (за пределами экрана).
- Картинка плавно появляется в начале анимации и плавно исчезает в конце.
5. Создание GIF-анимации
Если вам нужен GIF вместо видео, добавьте параметр -vf fps=10 и измените выходной формат:
ffmpeg \
-loop 1 -i background.jpg \
-loop 1 -i foreground.png \
-filter_complex \
"[1]scale=200:-1,format=rgba[fg]; \
[0][fg]overlay=x='if(between(t,1,9), -w+(t-1)*(W+w)/8, NAN)':y='if(between(t,1,9), H-(t-1)*(H+h)/8, NAN)':enable='between(t,1,9)', \
fade=t=in:st=1:d=1:alpha=1,fade=t=out:st=9:d=1:alpha=1" \
-t 10 -vf fps=10 output.gifЗдесь:
-vf fps=10— устанавливает частоту кадров (10 кадров в секунду).output.gif— имя выходного GIF-файла.
6. Дополнительные настройки
- Скорость движения:
- Измените формулу для
xиy, чтобы настроить скорость движения. Например,(t-1)*(W+w)/10замедлит движение. - Размер картинки:
- Измените параметр
scale=200:-1, чтобы настроить размер движущейся картинки. - Длительность анимации:
- Измените параметр
-t 10, чтобы увеличить или уменьшить длительность анимации.
Итог
- Используйте FFmpeg для создания анимации с движением картинки по диагонали.
- Настройте начальную и конечную позиции за пределами экрана.
- Добавьте плавное появление и исчезновение с помощью фильтра
fade.
Эта команда создаст анимацию, где картинка движется по диагонали и плавно появляется/исчезает.

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