ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2013:09:29:icecast2_et_ices2

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 daemon ices2.
  • Si “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

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

Sources

blog/2013/09/29/icecast2_et_ices2.txt · Dernière modification: 2013/09/29 23:37 par thierry