我有一个MySQL数据库,它存储我的所有曲目及其相关信息。数据库中的一个表是队列表,我从中提取一个曲目供Liquidsap播放。我正在使用request.dynamic.list.提供这些曲目以与Liquidsap一起播放
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在播放";准备好的";track,有没有办法删除该音轨,这样Liquidsap接下来就不会播放该音轨,而是再次调用get_track.py脚本,从数据库的队列表中加载新音轨?
Liquidsap总是提前准备流的下一个项目,这是其调度器的基本原理。例如,这允许在播放下载的曲目之前开始下载。只要您使用request.dynamic.list
,被调用的脚本就必须处理好这一点。换句话说,你不能仅仅依靠时钟时间来评估返回的轨迹。据我所知,您可能更喜欢使用request.queue
源代码,并让脚本通过telnet服务器按时推送每个请求。