Compare commits
2 Commits
b631c95100
...
3f54d04c63
Author | SHA1 | Date | |
---|---|---|---|
|
3f54d04c63 | ||
|
93a4668dd1 |
@ -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}
|
||||||
|
@ -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
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