@ -19,36 +19,37 @@ d'incompatiblités diverses et variées.
@@ -19,36 +19,37 @@ d'incompatiblités diverses et variées.
\index { icecast2}
\label { icecast2}
Icecast est, semble-t-il, \textbf { le} serveur de streaming de référence.
Il se configure facilement avec des fichiers en XML\index { XML} .
Première approche d'une ergonomie différente, vous êtes avertis.
\begin { quote}
Icecast, the project, is a collection of programs and libraries for
streaming audio over the Internet. This includes:
Icecast, the program that streams audio data to listeners,
libshout, a library for communicating with Icecast servers and
IceS \index { ices} , a program that sends audio data to Icecast servers
Ices2 \index { ices} , a program that sends audio data to Icecast servers
\end { quote}
Icecast est, semble-t-il, \textbf { le} serveur de stream de référence.
Il se configure facilement avec des fichiers en XML\index { XML} .
Première approche d'une ergonomie différente, vous êtes avertis.
Pour alimenter Icecast en son, il faut utiliser un
\textsl { source-client} approprié. Le modèle recommandé
est \textbf { ices2} qui est détaillé un peu plus loin,
à la page \pageref { ices2} .
\textsl { more to come...}
Il peut envoyer depuis une entrée audio (alsa, jack, pulseaudio...)
ou une playlistde fichiers \texttt { .ogg} \index { ogg} .
% -------------------------------------------------------------
\section { idjc}
\index { idjc}
\begin { quote}
Internet DJ Console is an Internet radio application for making a
live radio show or podcast. Features include two main media players
with a crossfader, a jingle player, microphone signal processing
(compressor and noise gate)
\end { quote}
\textsl { more to come...}
% -------------------------------------------------------------
\section { liquidsoap}
\index { liquidsoap}
Mais nous allonc commencer par un outil puissant, bien que
délicat à comprendre au premier abord~:
\texttt { https://www.liquidsoap.info/}
\begin { quote}
@ -95,17 +96,17 @@ Icecast2 en passant les paramètres nécessaires.
@@ -95,17 +96,17 @@ Icecast2 en passant les paramètres nécessaires.
\subsection { 10.20.0.23}
Maintenant, voyons un exemple plus complet et plus réaliste,
largement inspiré d'un tutoriel de la documentation officielle,
et qui deviendra un de ces jours la base de Radio-Myrys :
et qui deviendra un de ces jours la base de la nouvelle%
\footnote { L'ancienne ayant été fermée pour des raisons
incompréhensibles.} radio de Myrys~:
\begin { verbatim}
set("log.file.path", "/tmp/savon.log")
set("log.stdout", false)
default = single("loveme.ogg")
openbsd = playlist(mode="random", "files/openbsd.pls")
others = playlist(mode="random", "files/others.pls")
jingles = playlist( "files/jingles.pls")
@ -113,7 +114,6 @@ jingles = playlist( "files/jingles.pls")
@@ -113,7 +114,6 @@ jingles = playlist( "files/jingles.pls")
radio = fallback([ switch([({ 5h-11h } , openbsd),
({ 11h-5h } , others)]),
default])
radio = random(weights=[1,12],[ jingles, radio ])
output.icecast( % vorbis,
@ -125,11 +125,9 @@ output.icecast( %vorbis,
@@ -125,11 +125,9 @@ output.icecast( %vorbis,
\end { verbatim}
Ah bah oui, ça commence à être robuste, mais en fait c'est
assez simple à comprendre, et un peu plus compliqué à mettre
presque simple à comprendre, et un peu plus compliqué à mettre
en œuvre.
On se retrouve vite face à un problème classique :
les différences de niveau sonore entre les divers morceaux.
Et comme on veut avancer sur d'autres choses, on rache un
@ -153,6 +151,13 @@ s = rotate([pl2014, pl2013, ..., jingles])
@@ -153,6 +151,13 @@ s = rotate([pl2014, pl2013, ..., jingles])
output.icecast(..., s)
\end { verbatim}
\subsection { Take over the playlist}
XXX\index { XXX}
Il est également possible, avec liquidsoap, d'interrompre la
diffusion d'une playlist à partir d'une autre source
(fichier ou entrée audio), eventuellement externe.
\subsection { trucs divers}
@ -170,6 +175,28 @@ la suite les uns des autres ;)
@@ -170,6 +175,28 @@ la suite les uns des autres ;)
\section { Source clients}
\label { sourceclients}
Il existe une foultitude de clients source pour abreuver icecast2.
% -------------------------------------------------------------
\subsection { ices2} \index { ices2} \label { ices2}
Premier mystère : comment faire le rapprochement entre
la déclaration du périphérique d'entrée
(\texttt { <param name="device">hw:1,0</param>} ) et
l'équivalent dans le monde Alsa ?
La commande \texttt { arecord -L} va nous donner quelques
informations sur les « points d'entrée » utilisables.
Liste dont nous extrayons (par la pure pensée logique)
ce fameux nom de device~: \texttt { plughw:CARD=Snowball,DEV=0}
XXX\index { XXX} que nous pouvons mettre dans le XML.
\textbf { Attention} si votre source est monophonique, comme
le microphone USB \textsc { Snowball} utilisé dans cet exemple,
il NE faut PAS mettre \textsl { downmix} à 1\dots
% -------------------------------------------------------------
\subsection { Ezstream}
@ -195,8 +222,26 @@ interface (e.g. sound card), encodes it and sends it to a streaming server.
@@ -195,8 +222,26 @@ interface (e.g. sound card), encodes it and sends it to a streaming server.
\subsection { VLC}
\index { vlc}
% -------------------------------------------------------------
\subsection { idjc}
\index { idjc}
\begin { quote}
Internet DJ Console is an Internet radio application for making a
live radio show or podcast. Features include two main media players
with a crossfader, a jingle player, microphone signal processing
(compressor and noise gate)
\end { quote}
% -------------------------------------------------------------
\subsection { Android} \index { Android}
Cool Mic \texttt { https://coolmic.net/} ?
% ====================================================================
\section { libshout} \index { libshout} \label { libshout}
Mais c'est quoi ?\index { XXX}