用 Liquidsoap 脚本 10 行搭起一个网络电台
用 Liquidsoap 脚本 10 行搭起一个网络电台【免费下载链接】liquidsoapLiquidsoap is a statically typed scripting general-purpose language with dedicated operators and backend for all thing media, streaming, file generation, automation, HTTP backend and more.项目地址: https://gitcode.com/gh_mirrors/li/liquidsoap跑一个小网络电台只需要一个 Liquidsoap 进程不必堆一整套媒体服务器组件。Liquidsoap 是面向媒体流处理的脚本语言从播放列表读歌、做交叉淡入淡出、编码、推流到 Icecast 或 HLS。全部写在一个几十行的 .liq 脚本里文件坏了流也不断。它解决什么问题Liquidsoap 是一个通用的音视频流生成器核心抽象是源source一条正在播放的数据流。你用源构造函数playlist 等造出源再用切换、过渡算子fallback、crossfade 等把它们组合最后交给某个输出output.*数据出口按某种编码推出去。不用自己写调度、编码、断线重连这些底层逻辑直接摆算子就行一个进程还能同时输出 MP3、Ogg、HLS 等多种编码。 5 分钟跑起来有 Docker 的话一条命令拉官方镜像docker pull savonet/liquidsoap:v2.3.1在当前目录放一个 music.m3u每行一个文件路径和一个 radio.liqmusic playlist(/data/music.m3u) output.file(/data/out.mp3, %ffmpeg(formatmp3, %audio(b128k)), mksafe(music))把播放列表读出来整份编码成 MP3 落盘。docker run --rm -v $(pwd):/data savonet/liquidsoap:v2.3.1 /data/radio.liq挂载当前目录进容器执行脚本。跑完后目录里会多出一个能播放的 out.mp3——播放列表被从头播了一遍并编码写入这就是最小可运行的 Liquidsoap 流。 核心机制一图看懂Liquidsoap 脚本就是一张数据流图数据从源比如 playlist出发经过一串算子单向流动mksafe 是保活算子源坏了就补静音避免输出静默中断最后由输出持续拉走、编码、发出去。整条链上只有一个方向输出驱动源被动拉数据。图crossfade 两轨音量切换曲线上图是两首歌做交叉淡入淡出时的音量曲线旧曲old track淡出、新曲new track淡入中间交叉。整个过渡只由一个算子 crossfade 完成你不需要写任何音频插值代码。三个高频场景把播放列表变成 24 小时网络电台最常用随机播音乐、偶尔插一段台呼、轨与轨之间交叉淡化推给 Icecast 服务器。music playlist(/data/music.m3u) jingles playlist(/data/jingles.m3u) radio random([jingles.{weight 1}, music.{weight 4}]) radio crossfade(radio) output.icecast(%vorbis, hostlocalhost, port8000, passwordhackme, mountradio.ogg, mksafe(radio))平均每四首歌插一段台呼整条流以 Ogg 编码输出。踩坑提示Icecast 的 password 要用 icecast.xml 里的 source 密码来源密码不是 admin 密码用错会连接失败反复重连。想让玩家在浏览器里直接听再加一路 HLS 输出即可。输出 HLS 给网页播放HLS 是走 HTTP 的小分段.ts流式协议适合网页播放器。output.file.hls(/data/hls, [(aac, %ffmpeg(formatmpegts, %audio(codecaac, b128k)))], mksafe(playlist(/data/music.m3u)))m3u8 和 ts 分段文件会写进 /data/hls。踩坑提示hls 目录必须挂在一个 HTTP 服务nginx、caddy 等下才能被播放器访问忘了这一步播放器只会显示空白。音频场景聊完了下面看看直播进来怎么办。直播输入断了自动回退直播流随时可能断用 fallback 在直播和自动播放之间自动切换。live input.http(http://localhost:8000/live.aac) auto playlist(/data/music.m3u) output.icecast(%vorbis, hostlocalhost, port8000, passwordhackme, mountlive.ogg, fallback([live, mksafe(auto)]))直播恢复后会自动接管回来。踩坑提示fallback 的最后一个源必须不会断auto 是 fallible 的记得包一层 mksafe。 踩坑与排障现象启动就报That source is fallible!→原因output 不接受可能断流的源普通 playlist 就是 fallible 的 →解法mksafe(源)或fallback([源, single(backup.ogg)])包一层。现象跑脚本报一串 type error提到 int 和 float →原因类型严格无小数点的数字默认是 int →解法写小数点比如13.而不是13。现象日志刷We must catchup x.xx!输出不断被重置 →原因内部时钟落后通常是多路编码同时跑把 CPU 打满 →解法减少并行编码路数或让多个输出共享一次编码doc/content/cookbook.md 的 Transitions/Encoding 章节有现成写法。现象Unable to decode file→原因文件内容与期望媒体类型不符比如给要求视频的算子塞了纯音频文件 →解法先用ffprobe 文件确认它包含期望的音/视频轨。能延伸做什么元数据与回调on_track、metadata.map 让你在每首歌切换时跑自定义逻辑发通知、写数据库细节见 doc/content/metadata.md。按时段编排switch 配合谓词可以按钟点切换不同播放列表doc/content/scheduling.md 里有完整示例。视频流处理字幕叠加、水印、转码都支持参考 doc/content/video.md。图测试样例的视频字幕叠加效果继续深入先把 doc/content/quick_start.md 通读一遍然后照着 doc/content/liq/ 目录里的示例脚本逐个跑从 basic-radio.liq 开始每改一个参数观察一次行为。再往后按需求翻 doc/content/cookbook.md 和 doc/content/faq.md 解决具体问题。卡住的时候把报错原文去 faq.md 里搜一遍常见错误基本都有对应条目和修法。【免费下载链接】liquidsoapLiquidsoap is a statically typed scripting general-purpose language with dedicated operators and backend for all thing media, streaming, file generation, automation, HTTP backend and more.项目地址: https://gitcode.com/gh_mirrors/li/liquidsoap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

华为杯数学建模竞赛:从组队到论文的硬核实战指南

华为杯数学建模竞赛:从组队到论文的硬核实战指南

1. 从“华为杯”到“数模之星”:一场硬核建模的马拉松如果你正在搜索“华为杯数学建模竞赛获奖经验”,大概率是刚接触这个圈子,或者已经组好队,正对着赛题发愁,想找点“过来人”的干货。我拿过“数模之星提名”&#x…

2026/8/24 11:45:48 阅读更多 →
数学建模竞赛实战指南:从团队协作到模型构建的进阶策略

数学建模竞赛实战指南:从团队协作到模型构建的进阶策略

1. 从“华为杯”到“数模之星”:一场硬核的团队远征 如果你正在准备“华为杯”中国研究生数学建模竞赛,并且目标不仅仅是“成功参赛”,而是瞄准了最高荣誉之一的“数模之星”提名,那么这篇分享或许能给你带来一些不一样的视角。我…

2026/8/24 11:45:48 阅读更多 →
RPA Framework 入门实操:3 个任务跑通你的第一个自动化流程

RPA Framework 入门实操:3 个任务跑通你的第一个自动化流程

RPA Framework 入门实操:3 个任务跑通你的第一个自动化流程 【免费下载链接】rpaframework Collection of open-source libraries and tools for Robotic Process Automation (RPA), designed to be used with both Robot Framework and Python 项目地址: https:/…

2026/8/24 11:45:48 阅读更多 →

最新新闻

【2026年】三维智慧实验室从BIM到数字孪生

【2026年】三维智慧实验室从BIM到数字孪生

实验室建设正从粗放式迈向精细化,三维信息化是其中的重要方向。从BIM三维建模到数字孪生,实验室管理者能在电脑前直观掌握建筑结构、设备管线与运行状态,为运维与决策提供可视化依据。实验室智慧化升级,往往从一张三维地图开始。上…

2026/8/25 14:10:03 阅读更多 →
抖音游戏推广沟通的聊天记录怎么导出留存?秒档导出助手发行人计划场景完整指南

抖音游戏推广沟通的聊天记录怎么导出留存?秒档导出助手发行人计划场景完整指南

抖音游戏推广沟通记录怎么导出留存?秒档导出助手发行人计划场景完整指南 摘要 游戏发行方、厂商或推广团队通过抖音发行人计划,与大量推广达人、接单方对接推广任务,涉及任务发布、素材规范、脚本要求、发布排期、数据考核、结算分成、违规处…

2026/8/25 14:10:03 阅读更多 →
(论文速读)LitePT:卷积做低层几何,注意力做高层语义的轻量点云 Transformer

(论文速读)LitePT:卷积做低层几何,注意力做高层语义的轻量点云 Transformer

论文题目: LitePT: Lighter Yet Stronger Point Transformer(更轻量却更强的点云 Transformer) 会议: CVPR 2026 源码: GitHub - prs-eth/LitePT: [CVPR 2026 Highlight] LitePT: Lighter Yet Stronger Point Transfor…

2026/8/25 14:10:03 阅读更多 →
界面控件DevExpress Blazor v26.1新版亮点 - Windows、UI套件功能更新等

界面控件DevExpress Blazor v26.1新版亮点 - Windows、UI套件功能更新等

DevExpress Blazor控件为使用C#为Blazor服务器和Blazor WebAssembly创建高影响力的用户体验,其附带了70个原生的Blazor组件(包括DataGrid、Pivot Table、Scheduler、图表、数据编辑器和报表)。 在上文中(点击这里回顾>>&am…

2026/8/25 14:10:03 阅读更多 →
通用进销存 vs 行业定制进销存选型报告

通用进销存 vs 行业定制进销存选型报告

本文要点:本文从"通用型与行业定制型进销存系统的选型权衡"出发,以轻流与明道云为代表对比两类产品在业务适配度、迭代灵活性和长期成本方面的差异,并结合锻造、制造等行业的真实落地场景给出分场景选型建议,适合面临通…

2026/8/25 14:10:03 阅读更多 →
AI 的进步,真的可以预测吗?

AI 的进步,真的可以预测吗?

大模型经常给人一种“突然进化”的感觉:昨天还答不对的问题,模型规模扩大、数据增加之后,今天似乎就能完成了。于是,AI 进步常被描述成充满偶然性的黑箱探索。 但在这层不确定性之下,存在一条非常稳定的经验规律:当模型参数、训练数据和计算量持续增加时,语言模型的训练…

2026/8/25 14:09:02 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →