Квадратный корень + логика на основе округления. Если остаток от sqrt <0,5, округлите результат вниз, используйте результат в виде строк / столбцов и добавьте 1 к числу строк или столбцов; если остаток от sqrt> = 0.5, округлите результат и используйте его как число строк / столбцов.
10 videos = 4x3 (3.16; rounded down, so add 1 row or col)
9 videos = 3x3 (3; abs)
8 videos = 3x3 (2.82; round up)
7 videos = 3x3 (2.64; round up)
6 videos = 3x2 (2.44; round down, so add 1 row or col)
5 videos = 3x2 (2.23; round down, so add 1 row or col)
4 videos = 2x2 (2; abs)
3 videos = 2x2 (1.73; round up)
2 videos = split screen in half vertically or horizontally (however you'd like)
1 video = full screen
Теперь это должно сделать все видео "квадратными", и, вероятно, лучшим вариантом, потому что вы действительно не можете легко учесть различные разрешения / отношения, которые существуют там (если это не статично для вас).
Таким образом, в зависимости от отношения разрешения экрана к разрешению видео, вокруг сетки будет дополнительное пространство, поэтому вы захотите, чтобы сетка была центрирована. Тем не менее, один из вариантов заключается в том, чтобы вы взяли это пространство «отступа» и поделили его на количество строк (или столбцов) и использовали его в качестве буфера между видео.
Если у вас есть количество строк / столбцов и предполагается, что все видео имеют одинаковый размер, вы просто делите ширину экрана на столбцы и высоту на строки, и у вас есть размеры видео.
Затем разместите видео на экране - очевидно, в некоторых случаях некоторые места на сетке могут быть пустыми. Вы можете определить, какие строки и столбцы покрывают это пространство на сетке, и отцентрировать видео в этой конкретной строке.
Если вы хотите «максимизировать» видео, заранее определите, сколько места «максимизирует». Затем вычтите этот размер пикселя из разрешения экрана, прежде чем рассчитывать размер других видео. Если максимизация означает 50% экрана, то вы вычитаете это видео из числа видео в сетке и вычитаете 50% пиксельного пространства из разрешения экрана.