On va créer une “webradio” qui diffuse le format “ogg” au monde entier.
Si vous préférez les MP3, allez voir DarkIce
! (ou faites une conversion a la volée!)
~~READMORE~~
Mettre en place un petit service web pour suivre l'activité du serveur et des clients,
mais surtout: distribuer la source audio (produite par ices2
) aux clients.
# aptitude install icecast2
“Configurer icecast maintenant ?” Non!
Dans /etc/icecast2/icecast.xml
…
A minima, définir des mots de passe :
<authentication> <!-- Sources log in with username 'source' --> <source-password>password1</source-password> <!-- Relays log in username 'relay' --> <relay-password>password2</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>password3</admin-password> </authentication>
Le nom de domaine du bouzin:
<hostname>stream.mon-domain.fr</hostname>
Les écoutes:
<listen-socket> <port>8000</port> <bind-address>192.168.66.9</bind-address> <!-- <bind-address>127.0.0.1</bind-address> --> <!-- <shoutcast-mount>/stream</shoutcast-mount> --> </listen-socket> <listen-socket> <port>8000</port> <bind-address>127.0.0.1</bind-address> </listen-socket>
Maintenant modifier /etc/default/icecast2
pour avoir dedans:
ENABLE=true
Et voila:
# /etc/init.d/icecast2 restart
A ce stade, on doit avoir accès a une interface par là: http://localhost:8000
(Remplacer localhost
par l'adresse du serveur!)
Envoyer les fichiers .ogg
au serveur icecast2
.
# aptitude install ices2
Un exemple est là: /usr/share/doc/ices2/examples/ices-playlist.xml
Préparer des répertoires de travails:
# mkdir /usr/local/etc/ices2 # mkdir /usr/local/etc/ices2/music # mkdir /var/log/ices2
# cp /usr/share/doc/ices2/examples/ices-playlist.xml /usr/local/etc/ices2/
Apporter les modifications suivantes dans /usr/local/etc/ices2/ices-playlist.xml
(exemple et extraits!) :
<background>1</background>
<logpath>/var/log/ices2</logpath>
<pidfile>/var/run/ices2.pid</pidfile>
<metadata> <name>Aliens Radio Stream</name> <genre>Aliens Metal</genre> <description>Metal Radio from outer space</description> </metadata>
<param name="file">/usr/local/etc/ices2/playlist.txt</param>
<port>8000</port> <password>password1</password> <mount>/aliens-radio.ogg</mount>
<nominal-bitrate>128000</nominal-bitrate> <samplerate>44100</samplerate> <channels>2</channels>
Conversion mp3 en ogg:
$ ffmpeg -i Dream_Theater_-_2023_-_Inside_My_Ass.mp3 -acodec libvorbis -aq 6 /usr/local/etc/ices2/music/Dream_Theater_-_2023_-_Inside_My_Ass.ogg
-aq 4 | 128 Kbps |
-aq 6 | 192 Kbps |
-aq 9 | 320 Kbps |
etc…
Composer la playlist aléatoirement :
# find /usr/local/etc/ices2/music -type f -name '*.ogg' | sort -R > /usr/local/etc/ices2/playlist.txt
Et enfin:
# ices2 ices-playlist.xml
Il manque un truc pour démarrer ices2 en daemon à la manière de Debian ! |
Voir section suivante.
<audio controls preload="auto"> <source src="http://stream.mon-domain.fr:8000/aliens-radio.ogg" type="audio/ogg"> </audio>
On peut forcer ices2
a passer au fichier .ogg
suivant en envoyant le signal HUP
.
# kill -1 `cat /var/run/ices2.pid`
Je n'ai pas trouvé de script pour démarrer “ices2” automatiquement (à la façon de Debian), et notamment avec plusieurs flux simultanés (et des configurations différentes, bien sur).
C'est pourquoi j'ai écrit un petit script bash nommé ices2
Sources:
Le script ices2
est à déposer dans /etc/init.d/
.
# update-rc.d ices2 defaults
Ceci fait, il faut aussi un fichier ices2
dans /etc/default/ices2
Exemple:
# Full path to the server configuration file #CONFIGFILE="/etc/ices2/ices2.xml" CONFIGFILE="/usr/local/etc/ices2/auto" # Change this to true when done to enable the init.d script ENABLE=true
Règle simple:
CONFIGFILE
” désigne un simple fichier de configuration, il n'y aura qu'un daemon ices2
.CONFIGFILE
” est un répertoire, il peut y avoir plusieurs configurations pour autant de daemon ices2
Les daemons ices2 seront démarrés avec l'utilisateur “root ” |
L'exemple ci-dessus montrent que les conf sont dans :
/usr/local/etc/ices2/auto
Exemple:
# ls /usr/local/etc/ices2/auto/ -l total 0 lrwxrwxrwx 1 root staff 38 mars 24 23:32 100-ziltoid-radio.xml -> /usr/local/etc/ices2/ziltoid-radio.xml lrwxrwxrwx 1 root staff 37 mars 25 15:30 150-aliens-radio.xml -> /usr/local/etc/ices2/aliens-radio.xml
(Oui, ce sont des liens symboliques, mais peu importe…)
Lire la suite pour la configuration des services |
Les configurations doivent obligatoirement avoir:
<background>1</background>
Les paramètres suivant doivent être différents dans chaque configuration:
<ices> <logfile>FIXME</logfile> <pidfile>/var/run/FIXME</pidfile> <stream> <instance> <mount>/FIXME.ogg</mount> </instance> </stream> </ices>
Remplacer “FIXME
” par ce que vous voulez, pourvu que ce soit différent dans chaque configuration.
# /etc/init.d/ices2 start
# /etc/init.d/ices2 status
# /etc/init.d/ices2 stop
le “pidfile ” est extrait des configurations |
Pour les contrôler individuellement, il suffit de donner le fichier de configuration en 2ieme arguments.
Exemples:
# /etc/init.d/ices2 status /usr/local/etc/ices2/aliens-radio.xml
# cd /usr/local/etc/ices2 # /etc/init.d/ices2 restart ./aliens-radio.xml