« Icecast playback & direct Bullseye » : différence entre les versions

Aller à la navigation Aller à la recherche
aucun résumé des modifications
(Page créée avec « Tutoriel Icecast 2, IceS et Mixx pour Bullseye en réseau local par Petitchat =Introduction= Vous savez sûrement déjà en arrivant sur cette page qu'Icecast est un logiciel libre inspiré de Shoutcast servant à faire une web radio. Icecast ne fonctionne pas tout seul: il a besoin de sources qui lui fournissent un flux audio. Le serveur Icecast sert à distribuer ce flux aux auditeurs. [[file:https://www.icecast.org/docs/icecast-trunk/img/Icecast_shema.svg]... »)
 
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
Tutoriel Icecast 2, IceS et Mixx pour Bullseye en réseau local
'''Tutoriel Icecast 2, IceS et Mixx pour Bullseye en réseau local'''
par Petitchat
-----
par Petitchat  




Ligne 44 : Ligne 45 :


Nous allons essayer de tout installer d'un coup. Mais d'abord une petite mise à jour des dépôts :
Nous allons essayer de tout installer d'un coup. Mais d'abord une petite mise à jour des dépôts :
<code>
<code>
Sudo apt update
Sudo apt update
</code>
</code>
puis
puis
<code>
<code>
sudo apt install icecast2 libmp3lame-dev libxml2-dev libshout-dev libvorbis-dev build-essential
sudo apt install icecast2 libmp3lame-dev libxml2-dev libshout-dev libvorbis-dev build-essential
</code>
</code>
Lors de l'installation d'Icecast il est demandé 3 mots de passe, il faut les remplir. Faisons nous maintenant un espace de travail, par exemple sur le bureau un dossier « webradio ».
Lors de l'installation d'Icecast il est demandé 3 mots de passe, il faut les remplir. Faisons nous maintenant un espace de travail, par exemple sur le bureau un dossier « webradio ».
<code>
 
</pre>
cd /home/petitchat/Bureau
cd /home/petitchat/Bureau
mkdir webradio
mkdir webradio
</code>
</pre>
 
Puis dans ce dossier créons un dossier IceS qui va servir à recueillir les sources depuis Internet et les compiler.
Puis dans ce dossier créons un dossier IceS qui va servir à recueillir les sources depuis Internet et les compiler.
<code>
<code>
cd webradio ; mkdir ices ; cd ices
cd webradio ; mkdir ices ; cd ices
</code>
</code>
On télécharge alors les sources depuis Internet :
On télécharge alors les sources depuis Internet :
<code>
<code>
wget http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
wget http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
</code>
</code>
on les décompresse
on les décompresse
<code>
<code>
tar xf ices-0.4.tar.gz
tar xf ices-0.4.tar.gz
</code>
</code>
on se place dans le dossier ices-0,4
on se place dans le dossier ices-0,4
<code>
<code>
cd ices-0.4/
cd ices-0.4/
</code>
</code>
Là on lance la commande "configure" qui permet de préparer la compilation et de produire le fichier "make". On utilise deux options de configuration :
Là on lance la commande "configure" qui permet de préparer la compilation et de produire le fichier "make". On utilise deux options de configuration :
*--with-pic qui permet au code compilé d'être indépendant de sa position (Position Independent Code)
*--with-pic qui permet au code compilé d'être indépendant de sa position (Position Independent Code)
*--withe-lame qui permet d'avoir disponible l'option de réencodage à la volée
*--withe-lame qui permet d'avoir disponible l'option de réencodage à la volée
<code>
<code>
sudo ./configure --prefix=/usr/local --with-pic –with-lame
sudo ./configure --prefix=/usr/local --with-pic –with-lame
</code>
</code>
puis on lance make
puis on lance make
<code>
<code>
sudo make
sudo make
</code>
</code>
et enfin
et enfin
<code>
<code>
sudo make install
sudo make install
</code>
</code>
Maintenant nous allons copier le dossier de configuration:
Maintenant nous allons copier le dossier de configuration:
<code>
<code>
mkdir /etc/ices
mkdir /etc/ices
cp /usr/local/etc/ices.conf.dist /etc/ices/ices.conf
cp /usr/local/etc/ices.conf.dist /etc/ices/ices.conf
</code>
</code>
= Paramétrage de icecast2 =
= Paramétrage de icecast2 =


Éditons le fichier /etc/icecast2/icecast.xml
Éditons le fichier /etc/icecast2/icecast.xml
<code>
<code>
sudo nano /etc/icecast2/icecast.xml
sudo nano /etc/icecast2/icecast.xml
</code>
</code>
Les fichiers xml exigent une syntaxe rigoureuse, il faut faire très attention. Intéressons nous d'abord à la section d'authentification:  
Les fichiers xml exigent une syntaxe rigoureuse, il faut faire très attention. Intéressons nous d'abord à la section d'authentification:  
<code>
 
<pre>
     <authentication>
     <authentication>
         <!-- Sources log in with username 'source' -->
         <!-- Sources log in with username 'source' -->
Ligne 109 : Ligne 135 :
         <admin-password>hackme</admin-password>
         <admin-password>hackme</admin-password>
     </authentication>
     </authentication>
</code>
</pre>
 
Il faut vérifier ou changer les mots de passe et les reporter le moment venu dans les fichiers de configuration des relais et des sources. Le mot de passe « admin-password » sert à la connexion à la page web d'administration. Attention aussi à la section suivante :
Il faut vérifier ou changer les mots de passe et les reporter le moment venu dans les fichiers de configuration des relais et des sources. Le mot de passe « admin-password » sert à la connexion à la page web d'administration. Attention aussi à la section suivante :
<code>
 
<pre>
  <!-- This is the hostname other people will use to connect to your server.
  <!-- This is the hostname other people will use to connect to your server.
         It affects mainly the urls generated by Icecast for playlists and yp
         It affects mainly the urls generated by Icecast for playlists and yp
Ligne 124 : Ligne 152 :
         <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
         <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
     </listen-socket>
     </listen-socket>
</code>
</pre>
 
Il faut y renseigner en hostname l'adresse IP à laquelle on pourra joindre le serveur. Il est possible aussi de changer le port. Quand c'est fait on sauvegarde et on quitte l'éditeur. Icecast est déjà paramétré comme service (et automatiquement lancé au démarrage). On redémarre Icecast avec la commande :
Il faut y renseigner en hostname l'adresse IP à laquelle on pourra joindre le serveur. Il est possible aussi de changer le port. Quand c'est fait on sauvegarde et on quitte l'éditeur. Icecast est déjà paramétré comme service (et automatiquement lancé au démarrage). On redémarre Icecast avec la commande :
<code>
<code>
sudo systemctl restart iceacast2.service
sudo systemctl restart iceacast2.service
</code>
</code>
Si tout s'est bien passé, on peut accéder à la page web d'administration à l'adresse :
Si tout s'est bien passé, on peut accéder à la page web d'administration à l'adresse :
http://<hostname>:<port>/
http://<hostname>:<port>/
dans cet exemple :
dans cet exemple :
<code>
<code>
http://192.168.1.2:8000/
http://192.168.1.2:8000/
</code>
</code>
Plus tard il sera possible de revenir paramétrer ce fichier, notamment pour limiter le nombre de clients :
Plus tard il sera possible de revenir paramétrer ce fichier, notamment pour limiter le nombre de clients :
<code>
<code>
<clients>100</clients>
<clients>100</clients>
</code>
</code>
et surtout augmenter la limite du nombre de sources qui est limitée à deux par défaut :
et surtout augmenter la limite du nombre de sources qui est limitée à deux par défaut :
<code>
<code>
<sources>2</sources>
<sources>2</sources>
</code>
</code>
Il est normal que pour l'instant aucun point de montage n'apparaisse : les points de montage interviennent lors du paramétrage des sources. Pour finir le paramétrage d'Icecast, il faut savoir que le démon se lance avec cette commande :
Il est normal que pour l'instant aucun point de montage n'apparaisse : les points de montage interviennent lors du paramétrage des sources. Pour finir le paramétrage d'Icecast, il faut savoir que le démon se lance avec cette commande :
<code>
<code>
sudo icecast -c /etc/icecast2/icecast.xml
sudo icecast -c /etc/icecast2/icecast.xml
Ligne 149 : Ligne 189 :


=paramétrage de IceS=
=paramétrage de IceS=
Icecast peut convertir simultanément plusieurs flux audio en provenance de plusieurs sources différentes. Il est donc possible de lancer plusieurs instances d'IceS différentes afin d'obtenir simultanément plusieurs sources. Chaque sources a une configuration différente et se caractérise par un point de montage différent. Le point de montage détermine l'adresse à laquelle on pourra atteindre le flux correspondant.
Icecast peut convertir simultanément plusieurs flux audio en provenance de plusieurs sources différentes. Il est donc possible de lancer plusieurs instances d'IceS différentes afin d'obtenir simultanément plusieurs sources. Chaque sources a une configuration différente et se caractérise par un point de montage différent. Le point de montage détermine l'adresse à laquelle on pourra atteindre le flux correspondant.


Une chose à faire avant de se lancer dans la configuration à proprement parlée est de créer un dossier qui servira à recueillir la playlist, les fichiers ices.cue, ices.log et ices.pid (si ices est lancé sous forme de démon). Ce dossier est appelé <BaseDirectory> dans le fichier de configuration. Il est fortement conseillé de faire un dossier de base par source(=point de montage= différentes chaînes), sinon les différentes instances de IceS qui partagent le même dossier de base partagent aussi les même fichiers ices.log, ices.cue et ices.pid.
Une chose à faire avant de se lancer dans la configuration à proprement parlée est de créer un dossier qui servira à recueillir la playlist, les fichiers ices.cue, ices.log et ices.pid (si ices est lancé sous forme de démon). Ce dossier est appelé <BaseDirectory> dans le fichier de configuration. Il est fortement conseillé de faire un dossier de base par source(=point de montage= différentes chaînes), sinon les différentes instances de IceS qui partagent le même dossier de base partagent aussi les même fichiers ices.log, ices.cue et ices.pid.
Pour construire une arborescence de travail, on se place sur le dossier « webradio » créé précédemment :
Pour construire une arborescence de travail, on se place sur le dossier « webradio » créé précédemment :
<code>
<code>
cd /home/petitchat/Bureau/webradio
cd /home/petitchat/Bureau/webradio
</code>
</code>
et on créé le dossier de base de notre chaîne « radio petit chat » :
et on créé le dossier de base de notre chaîne « radio petit chat » :
<code>
<code>
mkdir petitchat  
mkdir petitchat  
</code>
</code>
Laissons là cet espace de travail et plaçons nous maintenant dans le dossier contenant le fichier de configuration d'IceS :
Laissons là cet espace de travail et plaçons nous maintenant dans le dossier contenant le fichier de configuration d'IceS :
<code>
<code>
cd /etc/ices/
cd /etc/ices/
</code>
</code>
et sauvegardons le fichier de configuration « ices.conf »
et sauvegardons le fichier de configuration « ices.conf »
<code>
<code>
sudo cp ices.conf ices.conf.bak
sudo cp ices.conf ices.conf.bak
</code>
</code>
Nous allons personnaliser le fichier configuration pour notre radio « radio petit chat », donc nous appellerons notre fichier de configuration « ices.petitchat.conf ».
Nous allons personnaliser le fichier configuration pour notre radio « radio petit chat », donc nous appellerons notre fichier de configuration « ices.petitchat.conf ».
<code>
<code>
Sudo cp ices.conf ices.petitchat.conf
Sudo cp ices.conf ices.petitchat.conf
</code>
</code>
Puis nous pouvons éditer le fichier « ices.petitchat.conf »
Puis nous pouvons éditer le fichier « ices.petitchat.conf »
<code>
<code>
sudo nano ices.petitchat.conf
sudo nano ices.petitchat.conf
</code>
</code>
La première section à paramétrer est la section <server> :
La première section à paramétrer est la section <server> :
<code>
 
<pre>
     <Server>
     <Server>
       <!-- Hostname or ip of the icecast server you want to connect to -->
       <!-- Hostname or ip of the icecast server you want to connect to -->
Ligne 191 : Ligne 243 :
       <Protocol>http</Protocol>
       <Protocol>http</Protocol>
     </Server>
     </Server>
</code>
</pre>
 
Voici une description des champs importants :
Voici une description des champs importants :
*<Hostname>, il faut laisser « localhost » si la source et la cible sont sur la même machine, sinon il faut renseigner l'adresse IP du serveur Icecast
*<Hostname>, il faut laisser « localhost » si la source et la cible sont sur la même machine, sinon il faut renseigner l'adresse IP du serveur Icecast
Ligne 198 : Ligne 251 :


La prochaine section importante est la section  <Exécution> :
La prochaine section importante est la section  <Exécution> :
<code>
 
<pre>
   <Execution>
   <Execution>
     <!-- Set this to 1 if you want ices to launch in the background as a
     <!-- Set this to 1 if you want ices to launch in the background as a
Ligne 210 : Ligne 264 :
     <BaseDirectory>/home/petitchat/Bureau/webradio/petitchat/</BaseDirectory>
     <BaseDirectory>/home/petitchat/Bureau/webradio/petitchat/</BaseDirectory>
   </Execution>
   </Execution>
</code>
</pre>
 
Explication des paramètres :
Explication des paramètres :
*<Background>, permet de lancer la source IceS comme un démon, il faut mettre ce paramètre sur 1 pour l'activer.
*<Background>, permet de lancer la source IceS comme un démon, il faut mettre ce paramètre sur 1 pour l'activer.
Ligne 217 : Ligne 272 :


Il reste ensuite un certains nombres de champs à examiner :
Il reste ensuite un certains nombres de champs à examiner :
<code>
 
<pre>
     <!-- The name of the mountpoint on the icecast server -->
     <!-- The name of the mountpoint on the icecast server -->
     <Mountpoint>/radiopetitchat.mp3</Mountpoint>
     <Mountpoint>/radiopetitchat.mp3</Mountpoint>
Ligne 235 : Ligne 291 :
the yp server, 1 if you do -->
the yp server, 1 if you do -->
     <Public>0</Public>
     <Public>0</Public>
</code>
</pre>
 
Voilà une description des champs importants :
Voilà une description des champs importants :
*<Mountpoint> défini le point de montage de la source qui ensuite est accessible à l'adresse : « http://<Hostname>:<port><Mountpoint> ».Dans l'exemple, notre source est accessible à l'URL : « http://192.168.1.2:8000/radiopetitchat.mp3. Par soucis de compatibilité avec certains lecteurs audio il est conseillé de choisir un nom de point de montage en minuscule, sans espace ou caractères spéciaux et finir le nom par « .mp3 » pour donner une information sur le format du flux.  
*<Mountpoint> défini le point de montage de la source qui ensuite est accessible à l'adresse : « http://<Hostname>:<port><Mountpoint> ».Dans l'exemple, notre source est accessible à l'URL : « http://192.168.1.2:8000/radiopetitchat.mp3. Par soucis de compatibilité avec certains lecteurs audio il est conseillé de choisir un nom de point de montage en minuscule, sans espace ou caractères spéciaux et finir le nom par « .mp3 » pour donner une information sur le format du flux.  
Ligne 244 : Ligne 301 :


Les prochains paramètres concernent le réencodage à la volée. Cela permet d'uniformiser le bitrate et le taux d'échantillonnage des mp3 qui sont diffusés et diminue les bugs qui peuvent survenir si, par exemple, les mp3 ont des bitrates trop hauts ou trop bas. Activer le réencodage n'utilise pas plus de mémoire et très légèrement plus de ressource processeur.
Les prochains paramètres concernent le réencodage à la volée. Cela permet d'uniformiser le bitrate et le taux d'échantillonnage des mp3 qui sont diffusés et diminue les bugs qui peuvent survenir si, par exemple, les mp3 ont des bitrates trop hauts ou trop bas. Activer le réencodage n'utilise pas plus de mémoire et très légèrement plus de ressource processeur.
<code>
 
<pre>
<!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
<!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
just used for display on YP and on the server. Try to keep it
just used for display on YP and on the server. Try to keep it
Ligne 257 : Ligne 315 :
     -->
     -->
     <Channels>2</Channels>
     <Channels>2</Channels>
</code>
</pre>
 
Explication des champs :
Explication des champs :
*<Bitrate>, Le biterate se mesure en kbits/secondes et mesure la qualité d'un fichier son. La valeur de 128 est reconnue dans la majorité des lecteurs audio
*<Bitrate>, Le biterate se mesure en kbits/secondes et mesure la qualité d'un fichier son. La valeur de 128 est reconnue dans la majorité des lecteurs audio
Ligne 264 : Ligne 323 :


Les derniers paramétrages se font dans la section <playlist> :
Les derniers paramétrages se font dans la section <playlist> :
<code>
 
<pre>
  <Playlist>
  <Playlist>
     <!-- This is the filename used as a playlist when using the builtin  
     <!-- This is the filename used as a playlist when using the builtin  
Ligne 282 : Ligne 342 :
     -->
     -->
   </Playlist>
   </Playlist>
</code>
</pre>
 
Avec les champs suivant :
Avec les champs suivant :
*<File>, indique le nom du fichier playlist pour cette source. Si le nom de fichier est relatif « playlist.petitchat.txt » alors IceS regarde dans le dossier courant, l'emplacement d'où on lance la commande de lancement de IceS. Ce champs accepte les noms de fichiers absolus qui sont préférables si on ne lance pas IceS toujours du même emplacement.  
*<File>, indique le nom du fichier playlist pour cette source. Si le nom de fichier est relatif « playlist.petitchat.txt » alors IceS regarde dans le dossier courant, l'emplacement d'où on lance la commande de lancement de IceS. Ce champs accepte les noms de fichiers absolus qui sont préférables si on ne lance pas IceS toujours du même emplacement.  
Ligne 293 : Ligne 354 :


= Quelques commandes =
= Quelques commandes =
== Script de lancement de IceS ==
== Script de lancement de IceS ==
Nous allons maintenant écrire un petit script qui nous servira à lancer notre source « radiopetitchat ». Ce script, appelons le « ices-petitchat.sh », contiendra simplement une ligne de commande de lancement. Celle ci est de la forme :
Nous allons maintenant écrire un petit script qui nous servira à lancer notre source « radiopetitchat ». Ce script, appelons le « ices-petitchat.sh », contiendra simplement une ligne de commande de lancement. Celle ci est de la forme :
<code>
 
<code>
/usr/local/bin/ices -c <fichier conf> -v
/usr/local/bin/ices -c <fichier conf> -v
</code>
</code>
On créé donc notre script de lancement , dans le dossier «/home/petitchat/Bureau/webradio/petitchat/ » créé précédemment (et utilisé en dossier de base pour notre chaîne):
 
On créé donc notre script de lancement, dans le dossier «/home/petitchat/Bureau/webradio/petitchat/ » créé précédemment (et utilisé en dossier de base pour notre chaîne):
 
<code>
<code>
sudo nano ices-petitchat.sh
sudo nano ices-petitchat.sh
</code>
</code>
La première ligne devra être
La première ligne devra être
<code>
<code>
#!/bin//sh
#!/bin//sh
</code>
</code>
Pour signifier un script, puis
Pour signifier un script, puis
<code>
<code>
/usr/local/bin/ices -c /etc/ices/ices.petitchat.conf -v
/usr/local/bin/ices -c /etc/ices/ices.petitchat.conf -v
</code>
</code>
on quitte en sauvegardant et on rend le script exécutable :
on quitte en sauvegardant et on rend le script exécutable :
<code>
<code>
sudo chmod +x ices-petitchat.sh
sudo chmod +x ices-petitchat.sh
Ligne 317 : Ligne 386 :


== confection d'une playlist de test ==
== confection d'une playlist de test ==
Copions le fichier « satiscation.mp3 » qui nous sert de test dans le dossier /webradio/petitchat/. Dans ce même dossier nous allons créer la première playslist de test :


Copions le fichier « satiscation.mp3 » qui nous sert de test dans le dossier /webradio/petitchat/. Dans ce même dossier nous allons créer la première playslist de test :
<code>
<code>
sudo nano playlist.petitchat.txt
sudo nano playlist.petitchat.txt
</code>
</code>
Attention a respecter le nom de playlist utilisé dans le champs <File> du fichier de configuration ices.petitchat.conf. La playlist n'accepte que les noms de fichiers avec leur chemin absolu, le seul nom de fichier ne suffit pas. Elle n'accepte pas non plus les jokers (« * »).  
Attention a respecter le nom de playlist utilisé dans le champs <File> du fichier de configuration ices.petitchat.conf. La playlist n'accepte que les noms de fichiers avec leur chemin absolu, le seul nom de fichier ne suffit pas. Elle n'accepte pas non plus les jokers (« * »).  


On remplit le nom du fichier qu'on souhaite jouer :
On remplit le nom du fichier qu'on souhaite jouer :
<code>
<code>
/home/petitchat/Bureau/webradio/petitchat/satiscation.mp3
/home/petitchat/Bureau/webradio/petitchat/satiscation.mp3
</code>
</code>
On sauvegarde et on quitte avant d'essayer notre webradio.  
On sauvegarde et on quitte avant d'essayer notre webradio.  


  == Lancer la source ==
  == Lancer la source ==
se placer dans le dossier « /webradio/petitchat/ » puis
Se placer dans le dossier « /webradio/petitchat/ » puis
 
<code>
<code>
sudo ices-petitchat.sh
sudo ices-petitchat.sh
</code>
</code>
Si la source est daemonisée, le programme affiche le PID du démon créé. On peut maintenant entendre le flux à une adresse de la forme :
Si la source est daemonisée, le programme affiche le PID du démon créé. On peut maintenant entendre le flux à une adresse de la forme :
http://<HostName>:<Port><MountPoint>
http://<HostName>:<Port><MountPoint>
donc dans notre cas :
donc dans notre cas :
http://192.168.1.2:8000/radiopetitchat.mp3
http://192.168.1.2:8000/radiopetitchat.mp3


== Arrêter la source ==
== Arrêter la source ==
Pour stopper la source il faut connaître son PID. Pour ce faire on utilise cette commande :
Pour stopper la source il faut connaître son PID. Pour ce faire on utilise cette commande :
<code>
<code>
sudo ps -aux | grep ices
sudo ps -aux | grep ices
</code>
</code>
« ps -aux » affiche les processus en cours, le | (pipe) envoie le résultat vers grep, « grep ices » cherche les lignes contenant la chaîne « ices » parmi celles renvoyées par « ps -aux ». On obtient une ligne qui ressemble à ceci :
« ps -aux » affiche les processus en cours, le | (pipe) envoie le résultat vers grep, « grep ices » cherche les lignes contenant la chaîne « ices » parmi celles renvoyées par « ps -aux ». On obtient une ligne qui ressemble à ceci :
<code>
<code>
root    31178  0.6  0.1  49080  2868 ?        Ss  23:06  0:19 /usr/local/bin/ices -c /etc/ices/ices.petitchat.conf -v
root    31178  0.6  0.1  49080  2868 ?        Ss  23:06  0:19 /usr/local/bin/ices -c /etc/ices/ices.petitchat.conf -v
</code>
</code>
Le PID correspond au nombre dans le deuxième champs soit ici « 31178 ».
Le PID correspond au nombre dans le deuxième champs soit ici « 31178 ».


Ligne 354 : Ligne 435 :


On utilise la commande «kill » en root pour arrêter le démon :
On utilise la commande «kill » en root pour arrêter le démon :
<code>
<code>
sudo kill -9 <PID>
sudo kill -9 <PID>
</code>
</code>
soit dans l'exemple
soit dans l'exemple
<code>
<code>
sudo kill -9 31178
sudo kill -9 31178
Ligne 363 : Ligne 448 :


= Scripts de confection de playlists =
= Scripts de confection de playlists =
Maintenant que nous sommes en mesure de diffuser un mp3 sur le réseau, il reste le long travail de définir la programmation de notre chaîne, ce qui revient à créer une playlist sophistiquée. Pour y parvenir voilà deux scripts qui peuvent servir d'outils pour créer des playlists facilement en se chargeant de différentes tâches fastidieuse.
Maintenant que nous sommes en mesure de diffuser un mp3 sur le réseau, il reste le long travail de définir la programmation de notre chaîne, ce qui revient à créer une playlist sophistiquée. Pour y parvenir voilà deux scripts qui peuvent servir d'outils pour créer des playlists facilement en se chargeant de différentes tâches fastidieuse.


== Script de conversion de playlist Windows vers Linux ==
== Script de conversion de playlist Windows vers Linux ==
Pour diverses raisons on peut avoir besoin de convertir une playlist faite sous windows en un format qu'IceS sous Linux puisse lire. C'est le cas si par exemple un dossier « musique » contenant les mp3 est partagé sur le réseau local et monté sur notre serveur Debian.  
Pour diverses raisons on peut avoir besoin de convertir une playlist faite sous windows en un format qu'IceS sous Linux puisse lire. C'est le cas si par exemple un dossier « musique » contenant les mp3 est partagé sur le réseau local et monté sur notre serveur Debian.  
La playlist au format m3u faite sous windows aura des lignes qui ressemblent à ceci :
La playlist au format m3u faite sous windows aura des lignes qui ressemblent à ceci :
<code>
 
<pre>
#EXTM3U
#EXTM3U
#EXTINF:491,Purrin Stones - Satisaction
#EXTINF:491,Purrin Stones - Satisaction
\\serveur\musique\rock\Purring Stones\Satiscation.mp3
\\serveur\musique\rock\Purring Stones\Satiscation.mp3
</code>
</pre>
 
Tandis que le dossier « musique » est accessible depuis le serveur à un chemin tel que  « /mnt/musique/ » .  Le fichier mentionné sur la playlist est donc accessible au chemin « /mnt/musique/rock/Purrin Stones/Satiscation.mp3 » .
Tandis que le dossier « musique » est accessible depuis le serveur à un chemin tel que  « /mnt/musique/ » .  Le fichier mentionné sur la playlist est donc accessible au chemin « /mnt/musique/rock/Purrin Stones/Satiscation.mp3 » .


Ligne 395 : Ligne 480 :


=== Préparation du script ===
=== Préparation du script ===
Créons dans le dossier « webradio » un dossier  « deejay » qui nous servira d'espace de travail pour composer  nos playlists :


Créons dans le dossier « webradio » un dossier  « deejay » qui nous servira d'espace de travail pour composer  nos playlists :
<code>
<code>
cd /home/petitchat/Bureau/webradio ; mkdir deejay
cd /home/petitchat/Bureau/webradio ; mkdir deejay
</code>
</code>
Dans ce dossier créons en deux autres, l'un pour stocker nos playlists Windows (qu'on utilisera en entrée du script) et l'autre pour stocker nos playlists Linux (qui seront écrites en sortie)
Dans ce dossier créons en deux autres, l'un pour stocker nos playlists Windows (qu'on utilisera en entrée du script) et l'autre pour stocker nos playlists Linux (qui seront écrites en sortie)
<code>
 
<pre>
cd  deejay
cd  deejay
mkdir playlistWindows playlistLinux
mkdir playlistWindows playlistLinux
</code>
</pre>
 
Pour pouvoir convertir les fichiers du format Dos (Windows) au format unix (Linux) le script utilise le paquet « dos2unix » qu'il faut installer :
Pour pouvoir convertir les fichiers du format Dos (Windows) au format unix (Linux) le script utilise le paquet « dos2unix » qu'il faut installer :
<code>
<code>
sudo apt install dos2unix
sudo apt install dos2unix
</code>
</code>
Puis nous créons le fichier du script à proprement parlé :
Puis nous créons le fichier du script à proprement parlé :
<code>
<code>
sudo nano convertissor
sudo nano convertissor
</code>
</code>
On y colle se code abondamment commenté :
On y colle se code abondamment commenté :
<code>
 
<pre>
#!/bin/bash
#!/bin/bash
#Convertissor convertit une playlist Windows en une playlist Linux
#Convertissor convertit une playlist Windows en une playlist Linux
Ligne 504 : Ligne 597 :
clear ;
clear ;
exit 0
exit 0
</code>
</pre>
 
Le script collé dans l'éditeur on sauvegarde en sortant avec contrôle + X puis on rend le script exécutable avec la commande :
Le script collé dans l'éditeur on sauvegarde en sortant avec contrôle + X puis on rend le script exécutable avec la commande :
<code>
<code>
sudo chmod +x convertissor
sudo chmod +x convertissor
Ligne 517 : Ligne 612 :
*prefix2paste : partie gauche du chemin des fichiers figurant dans la playlis Linux, partie qu'il faut coller pour rendre les fichiers accessible. Par exemple « /mnt/ »
*prefix2paste : partie gauche du chemin des fichiers figurant dans la playlis Linux, partie qu'il faut coller pour rendre les fichiers accessible. Par exemple « /mnt/ »
Une fois le script configuré on sauvegarde, on quitte et on lance le script avec sudo :
Une fois le script configuré on sauvegarde, on quitte et on lance le script avec sudo :
<code>
<code>
sudo ./convertissor
sudo ./convertissor
</code>
</code>
D'abord le script affiche les variables avec lesquelles il va procéder à la conversion. Il faut presser une touche, la conversion à lieu. Le programme affiche ensuite le nombre de lignes traitées (sans compter les lignes # diésées) et le nombre de fichiers ignorés.
D'abord le script affiche les variables avec lesquelles il va procéder à la conversion. Il faut presser une touche, la conversion à lieu. Le programme affiche ensuite le nombre de lignes traitées (sans compter les lignes # diésées) et le nombre de fichiers ignorés.


Si par exemple nous avons convertit une playlist Windows dansesdeschatons.m3u, le script produit la playlist dansesdeschatons.linux.m3u dans le dossier playlistLinux. Pour l'utiliser il faut copier la playlist dans le dossier « webradio/petitchat/ » et la nommer correctement « playlist.petitchat.txt »
Si par exemple nous avons convertit une playlist Windows dansesdeschatons.m3u, le script produit la playlist dansesdeschatons.linux.m3u dans le dossier playlistLinux. Pour l'utiliser il faut copier la playlist dans le dossier « webradio/petitchat/ » et la nommer correctement « playlist.petitchat.txt »
<code>
 
<pre>
cd playlistLinux
cd playlistLinux
sudo cp dansesdeschatons.linux.m3u /home/petitchat/Bureau/webradio/petitchat/playlist.petitchat.txt
sudo cp dansesdeschatons.linux.m3u /home/petitchat/Bureau/webradio/petitchat/playlist.petitchat.txt
</code>
</pre>
 
et redémarrer IceS.
et redémarrer IceS.


== Script d'extraction ==
== Script d'extraction ==
Finalement j'ai décidé de faire une chaîne de musique Punk. Pour ce faire nous avons paramétré ices.punk.conf, il ne reste plus qu'à faire une playlist. Dans notre exemple nous avons tous nos fichiers de musique punk dans /mnt/musique/punk/ . Ce dossier contient des dizaines de sous dossiers correspondant à autant de groupes et chacun de ses sous dossiers contient des albums.  
Finalement j'ai décidé de faire une chaîne de musique Punk. Pour ce faire nous avons paramétré ices.punk.conf, il ne reste plus qu'à faire une playlist. Dans notre exemple nous avons tous nos fichiers de musique punk dans /mnt/musique/punk/ . Ce dossier contient des dizaines de sous dossiers correspondant à autant de groupes et chacun de ses sous dossiers contient des albums.  
Ce script d'extraction permet de générer une playlist qui regroupe tout les mp3 contenu dans un dossier et ses sous dossiers. Dans notre exemple il permet de produire une playlist punk.linux.m3u avec tous nos mp3 de punk.  
Ce script d'extraction permet de générer une playlist qui regroupe tout les mp3 contenu dans un dossier et ses sous dossiers. Dans notre exemple il permet de produire une playlist punk.linux.m3u avec tous nos mp3 de punk.  
Ligne 537 : Ligne 635 :
Ce script reprend la même arborescence que le script précédant. Le dossier d'où on le lance doit contenir le dossier « playlistLinux » créé précédemment pour stocker les playlists au format Linux.  
Ce script reprend la même arborescence que le script précédant. Le dossier d'où on le lance doit contenir le dossier « playlistLinux » créé précédemment pour stocker les playlists au format Linux.  
On se place dans le dossier « deejay », on créé le fichier « extractor »  avec l'éditeur :
On se place dans le dossier « deejay », on créé le fichier « extractor »  avec l'éditeur :
<code>
<code>
sudo nano extractor
sudo nano extractor
</code>
</code>
et on y copie ce code  
et on y copie ce code  
<code>
 
<pre>
#!/bin/bash
#!/bin/bash


Ligne 579 : Ligne 680 :
clear ;
clear ;
exit 0
exit 0
</code>
</pre>
 
Puis on rend le fichier exécutable :
Puis on rend le fichier exécutable :
<code>
<code>
sudo chmod +x extractor
sudo chmod +x extractor
</code>
</code>
=== Fonctionnement du script ===
=== Fonctionnement du script ===
Avant de lancer le script il faut vérifier et changer le cas échéant ces variables au début du code :
Avant de lancer le script il faut vérifier et changer le cas échéant ces variables au début du code :
Ligne 591 : Ligne 695 :


Une fois les changements fait, on lance le script ainsi :
Une fois les changements fait, on lance le script ainsi :
<code>
<code>
sudo ./extractor
sudo ./extractor
</code>
</code>
Si les paramètres sont valides un message apparaît en fin de traitement et la playlist est créée dans le dossier « playlistLinux ».
Si les paramètres sont valides un message apparaît en fin de traitement et la playlist est créée dans le dossier « playlistLinux ».


Ligne 605 : Ligne 711 :
On ne peut pas le faire avec VLC. Lorsqu'on se connecte à un flux émis par VLC et sans l'option <burst-size>, la mémoire tampon du lecteur client met quelques secondes à se charger et ce délais empêche de synchroniser des clients. Au contraire, lorsqu'on se connecte dans un même réseau local physique à un flux Icecast configuré avec l'option <burst-size>, la lecture est quasiment instantanée : au bout de quelques essais de connexion on arrive à une synchronisation correcte.  
On ne peut pas le faire avec VLC. Lorsqu'on se connecte à un flux émis par VLC et sans l'option <burst-size>, la mémoire tampon du lecteur client met quelques secondes à se charger et ce délais empêche de synchroniser des clients. Au contraire, lorsqu'on se connecte dans un même réseau local physique à un flux Icecast configuré avec l'option <burst-size>, la lecture est quasiment instantanée : au bout de quelques essais de connexion on arrive à une synchronisation correcte.  
Dans Icecast l'option <burst-size> est activée par défaut, réglée sur 64 Ko. Il n'est normalement pas nécessaire de changer cette valeur. Dans la section <limits> il y a cette ligne :
Dans Icecast l'option <burst-size> est activée par défaut, réglée sur 64 Ko. Il n'est normalement pas nécessaire de changer cette valeur. Dans la section <limits> il y a cette ligne :
<code>
<code>
<burrst-size>65535</burst-size>
<burst-size>65535</burst-size>
<code>
<code>
qui indique le fonctionnement par défaut des différents points de montage. Si l'option est à nouveau spécifiée dans la section de configuration du point de montage alors la cette nouvelle valeur se superpose à la valeur par défaut et la remplace. D'autre part, on trouve dans le fichier icecast.xml l'option  <burst-on-connect>, cette option n'est plus utilisée, on peut la laisser. Elle permettait simplement d'activer ou nom l'option « burst ».  
qui indique le fonctionnement par défaut des différents points de montage. Si l'option est à nouveau spécifiée dans la section de configuration du point de montage alors la cette nouvelle valeur se superpose à la valeur par défaut et la remplace. D'autre part, on trouve dans le fichier icecast.xml l'option  <burst-on-connect>, cette option n'est plus utilisée, on peut la laisser. Elle permettait simplement d'activer ou nom l'option « burst ».  
PARTIE II Tutoriel Icecast Partie 2 : faire du direct avec une source extérieure pour Bullseye en réseau local


=Faire du direct depuis le réseau local=
=Faire du direct depuis le réseau local=
Ligne 626 : Ligne 731 :


Éditons le fichier /etc/icecast/icecast.xml
Éditons le fichier /etc/icecast/icecast.xml
<code>
<code>
sudo nano /etc/icecast.xml
sudo nano /etc/icecast.xml
</code>
</code>
Après la sections <Limits>, on ajoute cette portion de code :
Après la sections <Limits>, on ajoute cette portion de code :
<pre>
<pre>
     <mount>
     <mount>
Ligne 646 : Ligne 754 :
     </mount>
     </mount>
</pre>
</pre>
Bien sûr on doit remplacer chaque champs par ses propres paramètres. Ceux-ci appellent une explication :
Bien sûr on doit remplacer chaque champs par ses propres paramètres. Ceux-ci appellent une explication :
*<mount> : Balise de configuration d'un point de montage, se ferme avec </mount>
*<mount> : Balise de configuration d'un point de montage, se ferme avec </mount>
Ligne 660 : Ligne 769 :
*<burst-size> :Cette puissante option active le mode « burst » d'Icecast. Lors de la connexion d'un client, le serveur accélère le remplissage de la mémoire tampon. Ainsi la lecture du flux commence presque immédiatement après la connexion du client. Ce champs attend une valeur en octets, une valeur de 65536 (64Ko) convient la plupart du temps.
*<burst-size> :Cette puissante option active le mode « burst » d'Icecast. Lors de la connexion d'un client, le serveur accélère le remplissage de la mémoire tampon. Ainsi la lecture du flux commence presque immédiatement après la connexion du client. Ce champs attend une valeur en octets, une valeur de 65536 (64Ko) convient la plupart du temps.
Une fois que les modifications sont faites il faut les enregistrer  et quitter (Ctrl + X). On redémarre le service Icecast avec la commande :
Une fois que les modifications sont faites il faut les enregistrer  et quitter (Ctrl + X). On redémarre le service Icecast avec la commande :
<code>
<code>
sudo systemctl restart icecast.service
sudo systemctl restart icecast.service
</code>
</code>
Si l'on se rend sur la page d'administration d'Icecast à l'adresse http://192.168.1.2:8000/ on sera déçu de ne pas voir notre point de montage. Mais pas de panique, c'est tout à fait normal. En effet, et c'est un point important, Icecast ne crée un point de montage qu'à la connexion de la source.
Si l'on se rend sur la page d'administration d'Icecast à l'adresse http://192.168.1.2:8000/ on sera déçu de ne pas voir notre point de montage. Mais pas de panique, c'est tout à fait normal. En effet, et c'est un point important, Icecast ne crée un point de montage qu'à la connexion de la source.


Ligne 705 : Ligne 816 :
*Normalement après le scan par Mixxx des morceaux présents sur la machine il y a dans la bibliothèque en bas des titres à diffuser. Sur l'un d'eux on clique avec le bouton gauche ce qui fait apparaître un menu contextuel richement fourni.
*Normalement après le scan par Mixxx des morceaux présents sur la machine il y a dans la bibliothèque en bas des titres à diffuser. Sur l'un d'eux on clique avec le bouton gauche ce qui fait apparaître un menu contextuel richement fourni.
*Dans ce menu on choisi « Load to / Deck / Deck 1 ». Ceci a pour conséquence de charger le morceau choisi dans la platine de gauche.  
*Dans ce menu on choisi « Load to / Deck / Deck 1 ». Ceci a pour conséquence de charger le morceau choisi dans la platine de gauche.  
*Il ne reste qu'à cliquer sur le bouton « play/pause » sous la platine 1. La forme d'onde se met à défiler, les vu-mètres prennent des couleurs. Le temps que le logiciel encode le morceau et envoie le flux vers le serveur Icecast engendre un délais entre la lecture sur Mixxx et la lecture sur le logiciel client. Mais on entend la musique !
*Il ne reste qu'à cliquer sur le bouton « play/pause » sous la platine 1. La forme d'onde se met à défiler, les vu-mètres prennent des couleurs. Le temps que le logiciel encode le morceau et envoie le flux vers le serveur Icecast engendre un délais de plusieurs secondes entre la lecture sur Mixxx et la lecture sur le logiciel client. Mais on entend la musique !


=Conclusion=
=Conclusion=
C'est dommage que dans VLC la diffusion vers un serveur Icecast ne fonctionne pas, cela aurait été plus simple. Maintenant que nous avons Mixxx d'installé et configuré, il reste à apprendre à l'utiliser. A l'usage ça va vite. Il faut définir ou importer des playlists et utiliser l'Auto-DJ. Si l'on souhaite synchroniser plusieurs clients il faut relancer la lecture une fois ou deux sur chaque client dans le réseau local.
C'est dommage que dans VLC la diffusion vers un serveur Icecast ne fonctionne pas, cela aurait été plus simple. Maintenant que nous avons Mixxx d'installé et configuré, il reste à apprendre à l'utiliser. A l'usage ça va vite. Il faut définir ou importer des playlists et utiliser l'Auto-DJ. Si l'on souhaite synchroniser plusieurs clients dans le réseau local il faut relancer la lecture une fois ou deux sur chaque client.
70

modifications

Menu de navigation