Compare commits
No commits in common. "3f54d04c63c26fd4e38d581761771e0aa0236122" and "b631c95100ce948cdcf260229f7fabd1eace7c46" have entirely different histories.
3f54d04c63
...
b631c95100
@ -27,10 +27,7 @@ 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,14 +8,11 @@
|
|||||||
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}
|
||||||
@ -264,53 +261,6 @@ 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.
|
|
||||||
|
|
||||||
%====================================================================
|
%====================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
#!/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