Можно собрать эти потоки в т.н. мозаику, т.е. слепить исходные источники в один поток.
Как например описано тут
https://trac.ffmpeg.org/wiki/Create%20a%20mosaic%2...ffmpeg -i 1.avi -i 2.avi -i 3.avi -i 4.avi -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=320:y=240" -c:v libx264 output.mkv
Есть более изощрённые методы, например собрать все потоки на клиенте, как реализовано
тут.
Может быть удобно, если клиентский ПК нормальный, у него есть браузер и никакие другие приложения ставить нельзя. Или операторов много и они в разных сетях. Ну или когда камеры в мозаике нужно менять в гуе.
И да, нагрузка на сервер в таком варианте меньше.