Время чтения: 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.mp4
3. Разбор команды
-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
.
Эта команда создаст анимацию, где картинка движется по диагонали и плавно появляется/исчезает.
Добавить комментарий