Вам нужно использовать сложный фильтр:
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 функции.