Compare commits

...

2 Commits

Author SHA1 Message Date
tth
3f54d04c63 oh please baby, say uptime 2021-02-04 09:58:41 +01:00
tth
93a4668dd1 + section pipeline 2021-02-04 09:56:36 +01:00
3 changed files with 69 additions and 2 deletions

View File

@ -27,7 +27,10 @@ Ceci est un prompt. Son petit nom est \texttt{PS1}.
Parlons un peu du \textsc{shebang}\index{shebang}\dots Parlons un peu du \textsc{shebang}\index{shebang}\dots
% ============================================================== % ==============================================================
\section{Le pipeline}\index{pipeline}
Une invention géniale, voir un exemple d'utilisation par
un gadget sonore en page \pageref{say-uptime}.
% ==============================================================
\section{Questions à voir} \section{Questions à voir}
\begin{itemize} \begin{itemize}

View File

@ -8,11 +8,14 @@
Avertissement : pour le moment\footnote{En juillet 2014}, nous Avertissement : pour le moment\footnote{En juillet 2014}, nous
n'allons nous pencher que sur la diffusion de flux audios, avec n'allons nous pencher que sur la diffusion de flux audios, avec
des encodages libres comme \textsl{ogg} ou \textsl{speex}. des encodages libres comme \textsl{ogg} ou \textsl{speex}.
Tout simplement parce que le monde de la vidéo est un gigantesque Tout simplement parce que le monde de la vidéo est un gigantesque
foutoir de codecs, de containers, de brevets logiciels et foutoir de codecs, de containers, de brevets logiciels et
d'incompatiblités diverses et variées. 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} \section{icecast2}
@ -261,6 +264,53 @@ pour arriver à tenter de comprendre pouquoi ça ne fonctionne pas,
alors que tout semble correct. 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