Browse Source

work on streaming

master
tTh 2 years ago
parent
commit
2b73698aef
  1. 87
      chap/streaming.tex

87
chap/streaming.tex

@ -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}

Loading…
Cancel
Save