|
|
|
|
@@ -8,11 +8,14 @@
|
|
|
|
|
Avertissement : pour le moment\footnote{En juillet 2014}, nous
|
|
|
|
|
n'allons nous pencher que sur la diffusion de flux audios, avec
|
|
|
|
|
des encodages libres comme \textsl{ogg} ou \textsl{speex}.
|
|
|
|
|
|
|
|
|
|
Tout simplement parce que le monde de la vidéo est un gigantesque
|
|
|
|
|
foutoir de codecs, de containers, de brevets logiciels et
|
|
|
|
|
d'incompatiblités diverses et variées.
|
|
|
|
|
|
|
|
|
|
Une notion importante à bien comprendre, c'est l'organisation
|
|
|
|
|
du flux des sons immatériels au travers des intertubes.
|
|
|
|
|
|
|
|
|
|
\textbf{insert picture here !}\index{XXX}
|
|
|
|
|
|
|
|
|
|
%-------------------------------------------------------------
|
|
|
|
|
\section{icecast2}
|
|
|
|
|
@@ -261,6 +264,53 @@ pour arriver à tenter de comprendre pouquoi ça ne fonctionne pas,
|
|
|
|
|
alors que tout semble correct.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%====================================================================
|
|
|
|
|
\section{Gadgets}
|
|
|
|
|
|
|
|
|
|
On peut aussi imaginer des \textsl{client sources} plus ésotériques.
|
|
|
|
|
L'exemple classique étant l'utilisation de la synthèse vocale pour
|
|
|
|
|
faire une horloge parlante. Mais comme tout vieux linuxien, j'attache
|
|
|
|
|
un intérêt tout particulier à une valeur symbolique~:
|
|
|
|
|
l'uptime de ma machine.
|
|
|
|
|
En ces temps troublés\footnote{Début janvier 2021, le collectif
|
|
|
|
|
d'artistes Mixart-Myrys, dont je fais partie depuis dix ans,
|
|
|
|
|
ext en train de se faire salemenr éjecter de son hangartistique.
|
|
|
|
|
À cette occasion, j'ai remonté \textit{à la rache} un Icecast,
|
|
|
|
|
et je l'ai voulu un peu surprent, d'où l'uptime parlé.},
|
|
|
|
|
l'uptime, c'est important.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\lstinputlisting{code/say-uptime.sh}
|
|
|
|
|
|
|
|
|
|
L'option \texttt{-p} de la commande \texttt{uptime} permet d'obtenir
|
|
|
|
|
une sortie de cette forme : \textsf{up 1 day, 1 hour, 37 minutes}
|
|
|
|
|
qu'une micromagie \texttt{sed} change en une forme plus correcte
|
|
|
|
|
syntaxiquement, bien qu'anglo-saxonne.
|
|
|
|
|
|
|
|
|
|
La ligne suivante sert uniquement d'affichage de contrôle, et peut
|
|
|
|
|
être supprimée sans vergogne.
|
|
|
|
|
|
|
|
|
|
\label{say-uptime}
|
|
|
|
|
Les trois lignes suivantes vont effectivement généré le son qui sera
|
|
|
|
|
envoyé vers la radio\index{radio} de l'Internet.
|
|
|
|
|
|
|
|
|
|
Premier élémént du pipeline, \texttt{espeak-ng} reçoit le texte
|
|
|
|
|
par son \textsl{stdin} et génère le flux de
|
|
|
|
|
parole sur son \textsl{stdout}, à partir des options
|
|
|
|
|
\texttt{-g 9 -s 150 -a 133}, réglant la voix synthétique.
|
|
|
|
|
Ensuite, il faut que les échantillons sonores soient au format
|
|
|
|
|
physique attendu par le diffuseur,
|
|
|
|
|
d'où la conversion en 2$x$16 bits. Et pour finir, il est
|
|
|
|
|
encodé/encapsulé dans du OggVorbis\index{ogg} que le
|
|
|
|
|
\textsl{yuser} final ne pourra peut-être pas écouter sur
|
|
|
|
|
son \textsf{iPhone}.
|
|
|
|
|
|
|
|
|
|
Quand à la dernière ligne \texttt{~/bin/sender} c'est un programme,
|
|
|
|
|
basé sur \texttt{libshout}, qui va gérer l'authentification et
|
|
|
|
|
le transfert des données vers un point d'entrée du serveur icecast.
|
|
|
|
|
|
|
|
|
|
Voilà, c'est tout pour le moment.
|
|
|
|
|
|
|
|
|
|
%====================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|