oh please baby, say uptime

This commit is contained in:
tth 2021-02-04 09:58:41 +01:00
parent 93a4668dd1
commit 3f54d04c63
2 changed files with 65 additions and 1 deletions

View File

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

14
code/say-uptime.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
GS=" -g 9 -s 150 -a 133 "
#
# Rendez-nous notre Mixou !
#
uptime -p |
sed 's/^up/My uptime is /' |
tee /dev/stderr |
espeak-ng $GS --stdout |
sox - -t wav -b 16 - remix 1 1 2> /dev/null |
oggenc --quiet - -o - |
~/bin/sender > /dev/null