diff --git a/chap/streaming.tex b/chap/streaming.tex index 03d7e2b..58fabaa 100644 --- a/chap/streaming.tex +++ b/chap/streaming.tex @@ -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}. + +Il peut envoyer depuis une entrée audio (alsa, jack, pulseaudio...) +ou une playlistde fichiers \texttt{.ogg}\index{ogg}. + + \textsl{more to come...} -%------------------------------------------------------------- -\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} - %------------------------------------------------------------- \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. \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") 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, \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]) 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 ;) \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{hw:1,0}) 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. \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}