work on streaming
This commit is contained in:
parent
99eae15038
commit
2b73698aef
@ -19,36 +19,37 @@ d'incompatiblités diverses et variées.
|
|||||||
\index{icecast2}
|
\index{icecast2}
|
||||||
\label{icecast2}
|
\label{icecast2}
|
||||||
|
|
||||||
|
Icecast est, semble-t-il, \textbf{le} serveur de streaming de référence.
|
||||||
|
Il se configure facilement avec des fichiers en XML\index{XML}.
|
||||||
|
Première approche d'une ergonomie différente, vous êtes avertis.
|
||||||
|
|
||||||
\begin{quote}
|
\begin{quote}
|
||||||
Icecast, the project, is a collection of programs and libraries for
|
Icecast, the project, is a collection of programs and libraries for
|
||||||
streaming audio over the Internet. This includes:
|
streaming audio over the Internet. This includes:
|
||||||
Icecast, the program that streams audio data to listeners,
|
Icecast, the program that streams audio data to listeners,
|
||||||
libshout, a library for communicating with Icecast servers and
|
libshout, a library for communicating with Icecast servers and
|
||||||
IceS\index{ices}, a program that sends audio data to Icecast servers
|
Ices2\index{ices}, a program that sends audio data to Icecast servers
|
||||||
|
|
||||||
\end{quote}
|
\end{quote}
|
||||||
|
|
||||||
Icecast est, semble-t-il, \textbf{le} serveur de stream de référence.
|
Pour alimenter Icecast en son, il faut utiliser un
|
||||||
Il se configure facilement avec des fichiers en XML\index{XML}.
|
\textsl{source-client} approprié. Le modèle recommandé
|
||||||
Première approche d'une ergonomie différente, vous êtes avertis.
|
est \textbf{ices2} qui est détaillé un peu plus loin,
|
||||||
|
à la page \pageref{ices2}.
|
||||||
|
|
||||||
|
Il peut envoyer depuis une entrée audio (alsa, jack, pulseaudio...)
|
||||||
|
ou une playlistde fichiers \texttt{.ogg}\index{ogg}.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\textsl{more to come...}
|
\textsl{more to come...}
|
||||||
|
|
||||||
%-------------------------------------------------------------
|
|
||||||
\section{idjc}
|
|
||||||
\index{idjc}
|
|
||||||
|
|
||||||
\begin{quote}
|
|
||||||
Internet DJ Console is an Internet radio application for making a
|
|
||||||
live radio show or podcast. Features include two main media players
|
|
||||||
with a crossfader, a jingle player, microphone signal processing
|
|
||||||
(compressor and noise gate)
|
|
||||||
\end{quote}
|
|
||||||
|
|
||||||
%-------------------------------------------------------------
|
%-------------------------------------------------------------
|
||||||
\section{liquidsoap}
|
\section{liquidsoap}
|
||||||
\index{liquidsoap}
|
\index{liquidsoap}
|
||||||
|
|
||||||
|
Mais nous allonc commencer par un outil puissant, bien que
|
||||||
|
délicat à comprendre au premier abord~:
|
||||||
\texttt{https://www.liquidsoap.info/}
|
\texttt{https://www.liquidsoap.info/}
|
||||||
|
|
||||||
\begin{quote}
|
\begin{quote}
|
||||||
@ -95,17 +96,17 @@ Icecast2 en passant les paramètres nécessaires.
|
|||||||
|
|
||||||
\subsection{10.20.0.23}
|
\subsection{10.20.0.23}
|
||||||
|
|
||||||
|
|
||||||
Maintenant, voyons un exemple plus complet et plus réaliste,
|
Maintenant, voyons un exemple plus complet et plus réaliste,
|
||||||
largement inspiré d'un tutoriel de la documentation officielle,
|
largement inspiré d'un tutoriel de la documentation officielle,
|
||||||
et qui deviendra un de ces jours la base de Radio-Myrys :
|
et qui deviendra un de ces jours la base de la nouvelle%
|
||||||
|
\footnote{L'ancienne ayant été fermée pour des raisons
|
||||||
|
incompréhensibles.} radio de Myrys~:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
set("log.file.path", "/tmp/savon.log")
|
set("log.file.path", "/tmp/savon.log")
|
||||||
set("log.stdout", false)
|
set("log.stdout", false)
|
||||||
|
|
||||||
default = single("loveme.ogg")
|
default = single("loveme.ogg")
|
||||||
|
|
||||||
openbsd = playlist(mode="random", "files/openbsd.pls")
|
openbsd = playlist(mode="random", "files/openbsd.pls")
|
||||||
others = playlist(mode="random", "files/others.pls")
|
others = playlist(mode="random", "files/others.pls")
|
||||||
jingles = playlist( "files/jingles.pls")
|
jingles = playlist( "files/jingles.pls")
|
||||||
@ -113,7 +114,6 @@ jingles = playlist( "files/jingles.pls")
|
|||||||
radio = fallback([ switch([({ 5h-11h }, openbsd),
|
radio = fallback([ switch([({ 5h-11h }, openbsd),
|
||||||
({ 11h-5h }, others)]),
|
({ 11h-5h }, others)]),
|
||||||
default])
|
default])
|
||||||
|
|
||||||
radio = random(weights=[1,12],[ jingles, radio ])
|
radio = random(weights=[1,12],[ jingles, radio ])
|
||||||
|
|
||||||
output.icecast( %vorbis,
|
output.icecast( %vorbis,
|
||||||
@ -125,11 +125,9 @@ output.icecast( %vorbis,
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Ah bah oui, ça commence à être robuste, mais en fait c'est
|
Ah bah oui, ça commence à être robuste, mais en fait c'est
|
||||||
assez simple à comprendre, et un peu plus compliqué à mettre
|
presque simple à comprendre, et un peu plus compliqué à mettre
|
||||||
en œuvre.
|
en œuvre.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
On se retrouve vite face à un problème classique :
|
On se retrouve vite face à un problème classique :
|
||||||
les différences de niveau sonore entre les divers morceaux.
|
les différences de niveau sonore entre les divers morceaux.
|
||||||
Et comme on veut avancer sur d'autres choses, on rache un
|
Et comme on veut avancer sur d'autres choses, on rache un
|
||||||
@ -153,6 +151,13 @@ s = rotate([pl2014, pl2013, ..., jingles])
|
|||||||
output.icecast(..., s)
|
output.icecast(..., s)
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
\subsection{Take over the playlist}
|
||||||
|
|
||||||
|
XXX\index{XXX}
|
||||||
|
|
||||||
|
Il est également possible, avec liquidsoap, d'interrompre la
|
||||||
|
diffusion d'une playlist à partir d'une autre source
|
||||||
|
(fichier ou entrée audio), eventuellement externe.
|
||||||
|
|
||||||
\subsection{trucs divers}
|
\subsection{trucs divers}
|
||||||
|
|
||||||
@ -170,6 +175,28 @@ la suite les uns des autres ;)
|
|||||||
\section{Source clients}
|
\section{Source clients}
|
||||||
\label{sourceclients}
|
\label{sourceclients}
|
||||||
|
|
||||||
|
Il existe une foultitude de clients source pour abreuver icecast2.
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------
|
||||||
|
\subsection{ices2} \index{ices2} \label{ices2}
|
||||||
|
|
||||||
|
Premier mystère : comment faire le rapprochement entre
|
||||||
|
la déclaration du périphérique d'entrée
|
||||||
|
(\texttt{<param name="device">hw:1,0</param>}) et
|
||||||
|
l'équivalent dans le monde Alsa ?
|
||||||
|
|
||||||
|
La commande \texttt{arecord -L} va nous donner quelques
|
||||||
|
informations sur les « points d'entrée » utilisables.
|
||||||
|
Liste dont nous extrayons (par la pure pensée logique)
|
||||||
|
ce fameux nom de device~: \texttt{ plughw:CARD=Snowball,DEV=0}
|
||||||
|
XXX\index{XXX} que nous pouvons mettre dans le XML.
|
||||||
|
|
||||||
|
|
||||||
|
\textbf{Attention} si votre source est monophonique, comme
|
||||||
|
le microphone USB \textsc{Snowball} utilisé dans cet exemple,
|
||||||
|
il NE faut PAS mettre \textsl{downmix} à 1\dots
|
||||||
|
|
||||||
%-------------------------------------------------------------
|
%-------------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Ezstream}
|
\subsection{Ezstream}
|
||||||
@ -195,8 +222,26 @@ interface (e.g. sound card), encodes it and sends it to a streaming server.
|
|||||||
\subsection{VLC}
|
\subsection{VLC}
|
||||||
\index{vlc}
|
\index{vlc}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------
|
||||||
|
|
||||||
|
\subsection{idjc}
|
||||||
|
\index{idjc}
|
||||||
|
|
||||||
|
\begin{quote}
|
||||||
|
Internet DJ Console is an Internet radio application for making a
|
||||||
|
live radio show or podcast. Features include two main media players
|
||||||
|
with a crossfader, a jingle player, microphone signal processing
|
||||||
|
(compressor and noise gate)
|
||||||
|
\end{quote}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------
|
||||||
|
\subsection{Android} \index{Android}
|
||||||
|
|
||||||
|
Cool Mic \texttt{https://coolmic.net/} ?
|
||||||
|
|
||||||
%====================================================================
|
%====================================================================
|
||||||
|
|
||||||
|
|
||||||
\section{libshout}\index{libshout}\label{libshout}
|
\section{libshout}\index{libshout}\label{libshout}
|
||||||
|
|
||||||
Mais c'est quoi ?\index{XXX}
|
Mais c'est quoi ?\index{XXX}
|
||||||
|
Loading…
Reference in New Issue
Block a user