0

How should I best concatenate 16 separate .mp4 files into one 4x4 movie using -ffmpeg-?

I have workable code to create 2x2 movies (with changeable optional flag calls), with four equally-sized files, thus:

ffmpeg -i foo1.mp4 -i foo2.mp4 -i foo3.mp4 -i foo4.mp4 \ 
 -filter_complex \
   "[0:v][1:v]hstack[t]; \
    [2:v][3:v]hstack[b]; \
    [t][b]vstack,format=yuv420p[v]; \
    [0:a][1:a][2:a][3:a]amerge=inputs=4[a]" \
-map "[v]" \ 
-map "[a]" \
-ac 2 -c:v libx264 \
foo.mp4

and with four unequally-sized files, thus:

ffmpeg -i foo1.mp4 -i foo2.mp4 -i foo3.mp4 -i foo4.mp4 \
 -filter_complex \
   "[0:v]scale=640:360[v0]; \
    [1:v]scale=640:360[v1]; \
    [2:v]scale=640:360[v2]; \
    [3:v]scale=640:360[v3]; \
    [v0][v1]hstack[t]; \
    [v2][v3]hstack[b]; \
    [t][b]vstack,format=yuv420p[v]; \
    [0:a][1:a][2:a][3:a]amerge=inputs=4[a]" \
-map "[v]" \
-map "[a]" \
-c:v libx264 -crf 23 \
-c:a aac -b:a 192k \
foo.mp4

There is a solution posted here for splitting a single movie file into 16 4x4 pieces, but naturally I want to do the opposite! I can't quite work out in my own mind how I can knit together the necessary elements from my 2x2 code routines and the 4x4 split code into a satisfactory 4x4 solution. It may well be that the 16 individual movie files each have to be re-scaled downwards.

Any ideas would be gratefully received, especially coding solutions which are readily tweakable to any matrix combination (e.g., 3x3, 5x5, etc).

Thanks very much, Clive

  • Most of this is answered in [Vertically or horizontally stack (mosaic) several videos using ffmpeg?](https://stackoverflow.com/a/33764934/). See 4x4 example. – llogan Aug 08 '21 at 03:31
  • @llogan: OK, seen. Will follow the code and steps in the 4x4 example and hopefully it will do all of what I need it to do. Thanks very much. – Clive Nicholas Aug 09 '21 at 04:39

0 Answers0