Вам нужно использовать сложный фильтр:
ffmpeg -f lavfi -i "\
movie=input-1.mp4,scale=960:540[v1]; \
movie=input-2.mp4,scale=960:540[v2]; \
movie=input-3.mp4,scale=1920:540[v3]; \
[v1][v2]hstack[hstack]; \
[hstack][v3]vstack[stack]; \
movie=grid.png[grid]; \
[stack][grid]overlay=y='5*sin(0.1*n)'[outv]" \
-map "[outv]" \
output.mp4
Это предполагает, что у вас есть три входных видео (от input-1.mp4
до input-3.mp4
), которые в этом примере имеют scale
d, чтобы получить их в нужных размерах для сетки. Они затем по горизонтали и по вертикали stack
эд друг на друга , чтобы получить 1920⨉1080 вывода видео с наклейками , как stack
Теперь у вас есть прозрачный оверлей grid.png
, размер которого также должен быть 1920⨉1080. Конечно, вы должны создать эту сетку самостоятельно с помощью какого-либо графического редактора.
Эта сетка будет overlay
поверх стека, но ее координаты y
будут варьироваться в зависимости от вывода функции синуса. Вы можете отрегулировать скорость движения, изменив параметр перед n
(который является номером кадра), и амплитуду, изменив параметр перед функцией sin
.
Конечно, если вы хотите более случайное движение, вы можете дополнительно изменить положение, например, с помощью random
функции.