我有一个MySQL数据库,其中存储了我所有的曲目及其相关信息。数据库中的一个表是一个队列表,我从该表中拉出一个曲目以播放Liquidsoap。我提供了这些曲目,通过使用request.dynamic.list与Liquidsoap一起播放。
def get_track() =
# Get the first line of my external process
result = list.hd(default="", get_process_lines(scripts ^ "get_track.py"))
print(result)
# Create and return a request using this result
[request.create(result)]
end
# Create the source
sourcetrack = request.dynamic.list(id="play_queue", conservative=false, get_track)get_track.py脚本从数据库的队列表中检索一条记录。
我注意到Liquidsoap在启动时会抓取两个曲目。其中两个被“接受”,一个被“准备好”。
有没有办法让Liquidsoap一次只接受一首曲目,只有在当前播放的曲目接近尾声时才等待接受下一首曲目?
我也有计划的程序,这些程序被添加到数据库的队列表中,当这种情况发生时,所有的轨迹都会从数据库的队列表中清除,然后程序会被添加到队列表中。
由于Liquidsoap在播放“准备好的”曲目时似乎已经在其队列中加载了一个曲目,有没有办法删除该曲目,以便Liquidsoap接下来不会播放该曲目,而是再次调用get_track.py脚本从数据库的队列表中加载新的曲目?
发布于 2021-01-17 02:14:11
Liquidsoap总是提前准备好流的下一项,这是其调度器的基本原则。例如,这允许在播放下载的曲目之前开始下载。只要您使用的是request.dynamic.list,那么被调用的脚本就必须注意这一点。换句话说,您不能仅依靠时钟时间来评估要返回的曲目。据我所知,您可能更喜欢使用request.queue源,并让脚本通过telnet服务器及时推送每个请求。
https://stackoverflow.com/questions/63285537
复制相似问题