![]() |
1
2
这是一个版本的箱子包装问题 http://en.wikipedia.org/wiki/Bin_packing_problem 这是NP难,所以你要选择一些合理的启发式。如果你不想在调整视频大小的时候跳来跳去,你需要留下一堆额外的死角,或者自动缩小其他的死角。 除非你有充分的理由允许,否则我建议要求纵横比保持不变。 建议:首先确定所有视频的高度,然后使用贪婪的先适配算法将其打包。初始高度将是总屏幕高度的整数部分。如果有人调整视频的大小,其他所有内容都会缩小到相同的分数值,然后移走以适应。 |
![]() |
2
4
|
![]() |
3
0
基于舍入的平方根+逻辑。如果sqrt的其余部分为<0.5,则向下取整结果,将结果用作行/列,并将1添加到行或列计数中;如果sqrt的其余部分为>=0.5,则向上取整结果,并将其用作行/列计数。
现在,这将使所有的视频“方形”,并且,可能是最好的选择,因为你真的不能很容易地解释存在于那里的不同分辨率/比率(除非它对你是静态的)。 因此,根据显示分辨率与视频分辨率的比率,网格周围会有填充空间,因此您希望网格居中。也就是说,有一种选择是,将这个“填充”空间除以行数(或cols),并将其用作视频之间的缓冲区。 一旦你有了行/列的计数,并且假设所有的视频都是相同的大小,你只需将屏幕宽度除以列,高度除以行,你就有了你的视频尺寸。 然后,将视频平铺到屏幕上——显然,在同样的情况下,网格上的一些点可能是空的。您可以检测网格上空间覆盖的行和列,并将视频集中在特定行上。 如果你想“最大化”一段视频,那么提前确定“最大化”意味着多少空间。然后,在计算其他视频的大小之前,从屏幕分辨率中减去像素足迹。如果最大化意味着50%的屏幕,那么您将从网格中的视频数量中减去该视频,并从显示分辨率中减去50%的像素空间。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |