使用Liquidsoap(电子队列替代方案)安排播放列表的最佳实践方法



我正在寻找一种使用Liquidsoap安排播放列表的最佳实践方法。我目前的方法会产生大量延迟,因此无法满足无缝播放的要求。

要求

计划
  • 新的播放列表后,它应该删除所有以前计划的播放列表项目。
  • 在清除以前排队的播放列表项目时避免任何延迟。

我目前的实现

  1. 通过将一堆文件(代表播放列表(推送到equeue来安排它们
  2. 此队列开始播放
  3. 当下一个时间段到期时,新播放列表不能简单地排队,因为它只会在上一个播放列表排队的所有曲目播放完毕后才会开始。因此,我首先使用 Liquidsoap 服务器脚本删除了以前播放列表的所有曲目。此过程非常耗时,并且会延迟步骤 4 的及时执行。
  4. 通过将新文件
  5. 推送到equeue来安排新文件。

我怎样才能更优雅地做到这一点? 是否可以清除没有造成延迟的equeue

如果有"更正确"的 Liquidsoap 功能来实现这一点,例如playlist(我可以控制它的实际播放时间吗?(或request.dynamic(已弃用(而不是equeue,请告诉我。

更新:我目前正在使用两个队列:A 和 B。在队列 A 应该播放前一分钟,我用曲目(播放列表(填充它。当它应该实际播放时,我会调高音量。然后,在队列 B 应该播放前一分钟,我填充了这个队列。当实际播放时,我将音量从队列 A 转换> B。从理论上讲,这个解决方案很好,但这里的问题是我不知道队列在我调高音量之前暂停的方式。曲目似乎已经在队列/播放列表填满的那一刻开始播放。

如果不阅读完整的脚本,很难分辨,但我确信不可能暂停队列。充其量,您可以通过服务器界面删除一个项目:如果它是当前正在播放的项目并且它单独在队列中,那么它将停止该队列。您可能对 Beets示例感兴趣,这些示例讨论了外部程序如何填充源。

要从播放列表 A 切换到 B,Liquidsoap 的方法是在适当的时候准确地填充 B,像 Failback 这样的运算符将进行过渡。另请参阅fallback.skip。

相关内容

最新更新