【问题标题】:Best Practice approach to schedule playlists using Liquidsoap (equeue alternative)使用 Liquidsoap(队列替代)安排播放列表的最佳实践方法
【发布时间】:2020-06-14 22:20:37
【问题描述】:

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

要求

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

我目前的实现

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

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

如果有“更正确”的 Liquidsoap 功能来实现这一点,例如 playlist(我可以控制它何时播放?)或 request.dynamic(已弃用)而不是 equeue,请让我知道。

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

【问题讨论】:

    标签: liquidsoap


    【解决方案1】:

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

    要从播放列表 A 切换到 B,Liquidsoap 的方法是在适当的时候填充 B,然后像 fallback 这样的运算符将进行转换。另见fallback.skip

    【讨论】:

    • 感谢您的想法!是的,我正在使用填充播放列表的 Python 开发调度程序。我想避免你的第一个想法是在磁盘上写一个播放列表文件。动态创建它是首选。不幸的是,您使用request.dynamic 的第二个建议也不起作用,因为它已被弃用(请参阅github.com/savonet/liquidsoap/releases/tag/v1.4.2)。
    • 您所说的“在这两种解决方案中,播放列表都会根据 Liquidsoap 的时间表进行刷新,这与播放流程无关,因此应该避免延迟。”是什么意思?我能够控制比赛流程是至关重要的。 equeue 的一个问题(我猜request.dynamic 是类似的)是我不能说它什么时候应该开始播放。让我们采纳您的一项建议 - 如何确保它在正确的时刻播放?
    • 请查看我的问题了解更多详情 - 添加了一些更新。
    猜你喜欢
    • 2020-05-19
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多