1

我需要一个像 foobar2k 一样的音频播放器的“随机播放专辑”算法。所以问题是:我有一个曲目列表,根据某些标准排序,以便具有相同专辑的曲目都是相邻的。现在我需要能够以“随机专辑”模式播放播放列表中的歌曲,也就是说,如果下一首曲目来自同一张专辑,则直接播放,否则,转到下一张随机专辑的第一首曲目。如果用户想要播放上一首曲目,请执行相同的操作,但要向后播放。所以问题是:我怎么知道上一张专辑是什么?我真的不想保留已播放专辑的历史记录,也不想保留单独的列表。

目前,我通过给每个轨道随机洗牌索引来实现常规洗牌模式,这样我就可以通过找到最大洗牌索引小于当前和最小洗牌索引大于当前的轨道来找到上一个和下一个轨道。但它不适用于随机播放专辑模式。有人可以帮我吗?

样本输入:

Track 1, Album A
Track 2, Album A
Track 1, Album B
Track 2, Album B
Track 3, Album B
Track 1, Album C
Track 2, Album C
Track 3, Album C

假设当前曲目是曲目 1,专辑 A。下一首曲目将是曲目 2,专辑 A。下一首曲目不是来自同一张专辑,因此应选择随机专辑中的第一首曲目,假设曲目 1,专辑 C . 我现在正在做的是选择下一首曲目,就好像它是常规的随机播放模式一样,然后转到专辑的第一首曲目,从而丢失了我从哪里来到这张专辑的信息。所以当用户想要去上一张专辑时,我不知道我是如何到达那里的。希望这使问题更清楚。

谢谢你。

4

1 回答 1

2

您可以重复使用随机索引技术来索引专辑。现在,曲目索引是(专辑随机索引,曲目位置​​)对。要导航,增加/减少轨道位置;如果超出范围,请更新专辑索引。

也就是说,您应该重新考虑不保留历史记录;它可以让您更快地跳过大量专辑。

于 2010-11-20T15:19:44.650 回答