AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1681532
Accepted
Arvy
Arvy
Asked: 2021-10-14 05:36:26 +0800 CST2021-10-14 05:36:26 +0800 CST 2021-10-14 05:36:26 +0800 CST

Liquidsoap:从外部脚本读取下一个音频时没有预先排队

  • 772

我正在研究 Liquidsoap,试图用它替换我目前的 SAM Broadcaster。所以我试图重现相同的功能。

我的音频来自一个 PHP 脚本,它为叮当声、歌曲、广告、混合集等执行所有控制逻辑。我的脚本只返回一行,例如:/songs/820.mp3 或 /jingles/id1.mp3

在 LS 中,我使用的是“request.dynamic.list”,并且设法获取了 PHP 脚本文件。我最近发现 request.dynamic.list 实际上将“下一首歌曲”添加到队列中。因此,队列中总会有一个音频。当一个文件实际播放时,PHP 执行会将“下一个”添加到队列中,这会给我带来问题(例如:需要在晚上 8 点开始的节目)。

[11-Oct-2021 19:23:34] Generator: /mnt/2869.mp3 <------ request.dynamic.list to queue
[11-Oct-2021 19:23:34 ] Notify: /mnt/626.mp3 <------- actual song (read before), from on_metadata
[11-Oct-2021 19:27:19] Generator: /mnt/623.mp3 <-------- finished "626"
[11-Oct-2021 19:27:19] Notify: /mnt/2869.mp3 <-------- new song starting, but the PHP script for it ran 4 minutes before...

我发现“request.dynamic.list”中有参数“prefetch”。显然这就是我需要的,没有高级队列。

source = request.dynamic.list(prefetch=0,get_music)

它有效(我认为),但现在我不知道如何,仅在初始运行时,将第一个音频添加到队列中:)

在 SAM 中,当当前音频用完还有 10 秒时,它会运行 PHP 脚本。换句话说,在剩下 10 秒的时候,它会运行脚本,缓冲下一个 MP3 并淡出(永远不会超过 5 秒,所以它可以工作)。

一切都是本地的,因此 PHP 脚本会在几毫秒内返回并且不会出错。

我想做类似的事情。知道重现 SAM 行为的最佳方法是什么吗?非常感谢!!

liquidsoap
  • 1 1 个回答
  • 96 Views

1 个回答

  • Voted
  1. Best Answer
    Arvy
    2021-10-17T19:09:33+08:002021-10-17T19:09:33+08:00

    经过几个小时的阅读和测试,找到了实现相同功能的方法。

    这是(我不确定代码是否优化得很好,任何提示表示赞赏)。对于LiquidSoap 2.x。

    musics = request.dynamic.list(prefetch=0,fun()->[])
    
    radio = musics
    radio = cue_cut(radio)
    radio = crossfade(fade_in=0.,fade_out=0.,radio)
    radio = mksafe(radio)
    radio = fallback(track_sensitive=false,[radio])
    
    def analis() =
      rest=source.remaining(radio)
      if rest!=infinity and rest<10. and list.length(musics.queue())==0 then
         nov=process.read("/bin/php /root/generator.php")
         ignore(musics.add(request.create(nov)))
      end
      3.
    end
    
    thread.run.recurrent(delay=0.,analis)
    
    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve