Milestone 1: Liquidsoap broadcasting skeleton

Liquidsoap (v2.4.5) container that plays the /cache directory in random
order and broadcasts it over HTTP at :8000/radio.mp3 (MP3 192 kbps).
mksafe guarantees a continuous stream (silence when the cache is empty).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nemunaire 2026-07-02 16:10:34 +08:00
commit 29ab0be7cb
6 changed files with 129 additions and 0 deletions

29
stream/radio.liq Normal file
View file

@ -0,0 +1,29 @@
#!/usr/bin/liquidsoap
# radieo — couche diffusion (jalon 1)
# Joue le dossier /cache en boucle aléatoire et le diffuse en HTTP.
# Les jalons suivants remplaceront la source par un request.dynamic piloté
# par le daemon d'ingestion, en gardant ce dossier comme secours.
# --- Journalisation : tout sur la sortie standard (pratique en conteneur) ---
settings.log.stdout := true
settings.log.file := false
settings.log.level := 3
# --- Harbor : écoute sur toutes les interfaces du conteneur ---
settings.harbor.bind_addrs := ["0.0.0.0"]
# --- Source : le dossier de cache, rechargé quand son contenu change ---
radio = playlist(mode="randomize", reload_mode="watch", "/cache")
# mksafe garantit un flux continu : si la source échoue ou est vide,
# Liquidsoap émet du silence plutôt que de planter.
radio = mksafe(radio)
# --- Sortie : flux MP3 sur http://<hote>:8000/radio.mp3 ---
output.harbor(
%mp3(bitrate=192),
port=8000,
mount="radio.mp3",
radio
)