我的音频播放器需要一个“随机播放专辑”算法,例如foobar2k。所以问题是:我有一个曲目列表,根据一些标准排序,以便相同专辑的曲目都相邻。现在我需要能够以“随机播放专辑”模式播放播放列表中的歌曲,也就是说,如果下一首曲目来自同一专辑,则只播放它,否则,转到下一张随机专辑的第一首曲目。如果用户想要播放上一首曲目,则执行相同的操作但向后。所以问题是:我怎么知道以前的专辑是什么?我真的不想保留播放专辑的历史记录,也不想单独列出。
目前,我通过给每个轨道随机shuffle索引实现常规的shuffle模式,这样我就可以通过找到最大shuffle索引小于当前和最小shuffle索引大于当前的shuffle索引来找到前一个和下一个跟踪。但它不适用于随机播放专辑模式。有人可以帮我吗?
示例输入:
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.我现在正在做的是选择下一首曲目,好像它是普通的随机播放模式,然后进入其专辑的第一首曲目,从而丢失我来到这张专辑的信息。因此,当用户想要访问上一张专辑时,我不知道我是如何到达那里的。希望能让问题更加清晰。
谢谢。
答案 0 :(得分:2)
您可以重复使用随机索引技术来索引相册。现在轨道索引是(专辑随机索引,轨道pos)对。要导航,增加/减少轨道位置;如果超出范围,请更新专辑索引。
那就是说,你应该重新考虑不保留历史;它可以让你在大量专辑中快速跳回来。