oh please baby, say uptime
This commit is contained in:
parent
93a4668dd1
commit
3f54d04c63
@ -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
14
code/say-uptime.sh
Normal 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
|
Loading…
Reference in New Issue
Block a user