我正在寻找一种使用Liquidsoap安排播放列表的最佳实践方法。我目前的方法会产生大量延迟,因此无法满足无缝播放的要求。
要求:
计划- 新的播放列表后,它应该删除所有以前计划的播放列表项目。
- 在清除以前排队的播放列表项目时避免任何延迟。
我目前的实现:
- 通过将一堆文件(代表播放列表(推送到
equeue
来安排它们 - 此队列开始播放
- 当下一个时间段到期时,新播放列表不能简单地排队,因为它只会在上一个播放列表排队的所有曲目播放完毕后才会开始。因此,我首先使用 Liquidsoap 服务器脚本删除了以前播放列表的所有曲目。此过程非常耗时,并且会延迟步骤 4 的及时执行。 通过将新文件
- 推送到
equeue
来安排新文件。
我怎样才能更优雅地做到这一点? 是否可以清除没有造成延迟的equeue
?
如果有"更正确"的 Liquidsoap 功能来实现这一点,例如playlist
(我可以控制它的实际播放时间吗?(或request.dynamic
(已弃用(而不是equeue
,请告诉我。
更新:我目前正在使用两个队列:A 和 B。在队列 A 应该播放前一分钟,我用曲目(播放列表(填充它。当它应该实际播放时,我会调高音量。然后,在队列 B 应该播放前一分钟,我填充了这个队列。当实际播放时,我将音量从队列 A 转换> B。从理论上讲,这个解决方案很好,但这里的问题是我不知道队列在我调高音量之前暂停的方式。曲目似乎已经在队列/播放列表填满的那一刻开始播放。
如果不阅读完整的脚本,很难分辨,但我确信不可能暂停队列。充其量,您可以通过服务器界面删除一个项目:如果它是当前正在播放的项目并且它单独在队列中,那么它将停止该队列。您可能对 Beets示例感兴趣,这些示例讨论了外部程序如何填充源。
要从播放列表 A 切换到 B,Liquidsoap 的方法是在适当的时候准确地填充 B,像 Failback 这样的运算符将进行过渡。另请参阅fallback.skip。