Table des matières
Icecast2 et ices2
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~~
icecast2
Fonction
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.
Installation
# aptitude install icecast2
“Configurer icecast maintenant ?” Non!
Configuration
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
Interface
A ce stade, on doit avoir accès a une interface par là: http://localhost:8000
(Remplacer localhost
par l'adresse du serveur!)
ices2
Fonction
Envoyer les fichiers .ogg
au serveur icecast2
.
Installation
# aptitude install ices2
Configuration
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>
mp3 en ogg
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…
playlist
Composer la playlist aléatoirement :
# find /usr/local/etc/ices2/music -type f -name '*.ogg' | sort -R > /usr/local/etc/ices2/playlist.txt
Démarrer ices2
Et enfin:
# ices2 ices-playlist.xml
Il manque un truc pour démarrer ices2 en daemon à la manière de Debian ! |
Voir section suivante.
Tests
html5
<audio controls preload="auto"> <source src="http://stream.mon-domain.fr:8000/aliens-radio.ogg" type="audio/ogg"> </audio>
m3u
xspf
Next
On peut forcer ices2
a passer au fichier .ogg
suivant en envoyant le signal HUP
.
# kill -1 `cat /var/run/ices2.pid`
Script de démarrage
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
Installation
Sources:
Le script ices2
est à déposer dans /etc/init.d/
.
# update-rc.d ices2 defaults
Configuration
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:
- Si “
CONFIGFILE
” désigne un simple fichier de configuration, il n'y aura qu'un daemonices2
. - Si “
CONFIGFILE
” est un répertoire, il peut y avoir plusieurs configurations pour autant de daemonices2
Les daemons ices2 seront démarrés avec l'utilisateur “root ” |
Les Configurations ices2
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.
Les contrôler tous
# /etc/init.d/ices2 start
# /etc/init.d/ices2 status
# /etc/init.d/ices2 stop
le “pidfile ” est extrait des configurations |
Les contrôler un par un
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