我试图解决一个有趣的问题(我将用JavaScript编写代码,但并不重要):
假设有多个视频在不同的 y 图层上以几秒钟的片段形式出现。如果视频在时间上重叠,那么在同时播放所有视频时,顶层的视频将可见。
现在,我有很多这样的图层(这就是问题所在),我想在可能的情况下合并一些图层,所以最后我将以相同的方式直观地显示相同数量的视频,但图层更少。
我将向您展示一个图像,该图像将提供更好的理解
在这张照片中,我以11个视频为例,在11个初始层上。
例如,我们可以看到2和1可以放在同一层上,因为它们不重叠,并且在视觉上视频将显示相同,但是例如1和9不能放在第9层和第1层,因为7过度,并且会丢失显示顺序(z-index)
如果我想在代码中表示这一点:
const orderedSegments = [
[15, 18], // 1
[0.3, 9], // 2
[4, 13], // 3
[8, 14], // 4
[1, 3], // 5
[16, 19.5], // 6
[4.1, 17.5], // 7
[0, 2.9], // 8
[2.9, 11], // 9
[12.5, 19.4], // 10
[11.3, 12] // 11
]
以下是如何看起来只有5层但具有相同显示的可能结果之一:
const expectedLayers = [
[[0.3, 9], [15, 18]], // 2, 1
[[1, 3], [4, 13]], // 5, 3
[[8, 14], [16, 19.5]], // 4, 6
[[0, 2.9], [4.1, 17.5]], // 8, 7
[[2.9, 11], [11.3, 12], [12.5, 19.4]] // 9, 11, 10
]
我想过按开始持续时间对段进行排序,然后创建1层并尝试尽可能多地插入其中,当不可能时再创建新层...但我不知道如何正确保存顺序。
这就是为什么我要求看看是否有一些已知的算法可以做这样的事情,比如在保持顺序的同时合并段。
感谢您的想法。
海绵宝宝撒
幕布斯6054654
相关分类