|
|
|
@ -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. |
|
|
|
|
|
|
|
|
|
%==================================================================== |
|
|
|
|
|
|
|
|
|
|
|
|
|
|