FaireduBruit

Un article de Le wiki de la webradio sous Linux.

Ben oui, on a installé la base, l'interface web et on a compilé nos petits programmes... Mais y nous manque tout de même un bout du truc : Comment on fait sortir la musique ! Bon, on reprend depuis le début :

Sommaire

[modifier] Les comptes

On a créé un compte utilsateur qui repond au doux nom de radio, mot de passe radio. Le compte de la BdD etait radio, mot de passe radio (et sur la base radio) On a installé icecast2 (le serveur) et on a compilé une version adaptée de ices (stream404) qui va chercher la musique dans la base et qui l'envoie dans icecast2 a travers le scheduler (mediabox404)

Dans un premier temp on va voir comment envoyer un seul flux puis, dans un article ulterieur, on en enverra 3 puis 6 (woaaaaw )

[modifier] Icecast2

Sous debian, icecast2 s'installe et se lance comme démon sous le compte icecast2 et appelle le fichier /etc/icecast2/icecast.xml.

Voila un exemple de icecast.xml.

A noter que le format xml n'est pas joueur du tout et déteste les signes cabalistique du genre &,é,è,!, ' et autres . Les lignes en rouge sont des commentaires ou des arguments à changer.

A noter que je mets les commentaires avec des # en début de ligne. Ceux-ci DOIVENT être enlevés AVANT de lancer quoique ce soit ! Si vous laissez des commentaires, mettez les au format xml :

<icecast>
   <limits>
      # Le nombre d'auditeurs possible. On prevoit large
      <clients>500</clients>
      # Le nombre de sources possible. Une source sera le programme qui envoit un flux a icecast
      <sources>4</sources>
      <threadpool>5</threadpool>
      # Taille du cache
      <queue-size>102400</queue-size>
      # divers timeount
      <client-timeout>30</client-timeout>
      <header-timeout>15</header-timeout>
      <source-timeout>10</source-timeout>
   </limits>
# mot de passe de la source cf darkice, stream404, streamtrancodev3, etc.
# Par defaut, le compte s'appelle source
   <authentication>
      <source-password>motdepasseachanger</source-password>
   </authentication>
# adresse de la machine sur laquelle le serveur icecast2 tourne
# c'est l'adresse de la machine qui stream
   <hostname>www.mabelleradioquiroxe.net</hostname>
   # port sur lequel icecast2 ecoute. On reste classique et on garde le port 8000
   <listen-socket>
      <port>8000</port>
   </listen-socket>
# authentification administration serveur icecast2
#c'est ce compte qui est utilisé pour se logger pour voir les stats par ex.
   <authentication>
     <admin-user>adminmediabox</admin-user>
     <admin-password>pwdadminmediabox</admin-password>
   </authentication>
# Si vous utilisez l'option fileserve. Nous non, alors on s'en fout
   <fileserve>0</fileserve>
# Repertoire applicatifs et logs-->
   <paths>
      <basedir>/usr/share/icecast</basedir>
      <logdir>/var/log/icecast2</logdir>
      <webroot>/etc/icecast2/web</webroot>
      <adminroot>/etc/icecast2/admin</adminroot>
   </paths>
# noms des fichiers de logs
   <logging>
      <accesslog>access.log</accesslog>
      <errorlog>error.log</errorlog>
      <loglevel>3</loglevel>
# niveau d'informations transmises par les fichiers de log : 4 Debug, 3 Info, 2 Alerte, 1 Erreur</logging>
# Ce qui suit est utilisé pour se faire recenser dans le repertoire du site icecast
   <directory>
      <yp-url-timeout>15</yp-url-timeout>
      <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
   </directory>
# Les options de securité
   <security><chroot>0</chroot>
   <changeowner>
# groupe et utilisateur a partir duquel le serveur est lance, root interdit
      <user>icecast2</user>
      <group>icecast</group>
   </changeowner>
   </security>
</icecast>

On a fini pour l'instant avec le fichier de conf d'icecast, on passe sur le fichier du scheduler.

[modifier] Mediabox_prg.xml

C'est le fichier de conf de mediabox404. Il est placé dans /etc/radio créé pour l'occasion (et avec les bons droits )

<?xml version="1.0"?>
<mediabox404_audio_prg:Configuration xmlns:mediabox404_audio_prg="http://www.radio404.org">
<Log>
# 0 ou 1 pour choisir le niveau de verbosité
    <Verbose>1</Verbose>
# Idem pour avoir des logs (conseillé)
    <LogFile>1</LogFile>
# L'emplacement du fichier de log (par defaut le rep courant)
    <BaseDirectory>.</BaseDirectory>
    </Log>
<Timing>
# Le definition des intervalles des programmes en minute
# C'est ce que vous retrouvez dans la fenetre de programation
    <program>15</program>
# L'intervalle entre les jingles en minute
    <jingle>60</jingle>
# L'intervalle entre les promos en minute
    <promo>120</promo>
# L'intervalle de controle de prog (en heure)
    <period_control>0</period_control>
# Define programmation control : nb scrap data
# Joker ! j'en sais rien 
    <max_control>0</max_control>
    </Timing><Sql>
# Le hostname de la machine qui abrite la bdd. souvent localhost
<Hostname>localhost</Hostname>
# Le port de mysql
<Port>3306</Port>
# Peut servir en cas de BdD distante... Pas trop compris 
# <Unixsocket>/var/lib/mysqld/mysqld.sock</Unixsocket>
<User>adminbddradio</User>
<Password>pwdadminradio</Password>
<Database>nomdelabaseradio</Database>
<Mysql_options>Mediabox404_audio_prg</Mysql_options>
# Le reste on s'en fout pour l'instant mais n'y touchez pas
<Data>t_data</Data>
<Datapath>t_datapath</Datapath>
<Playlist>t_playlist</Playlist>
<Playlistdata>t_playlistdata</Playlistdata>
<Live>t_live</Live>
<Programme>t_programme</Programme>
<Streamstack>t_streamstack</Streamstack>
<Progstack>t_progstack</Progstack>
<Pilotstack>t_pilotstack</Pilotstack>
<Streamlog>t_streamlog</Streamlog>
<Log>t_log</Log>
<Tempstack>t_tempstack</Tempstack>
<Lastmainplaylist>t_lastmainplaylist</Lastmainplaylist>
<Lastplaylist>t_lastplaylist</Lastplaylist>
<Lastpromo>t_lastpromo</Lastpromo>
<Lastjingle>t_lastjingle</Lastjingle>
<Currentplaylisttype>t_currentplaylisttype</Currentplaylisttype>
<Metadata>t_metadata</Metadata>
</Sql>
</mediabox404_audio_prg:Configuration>

Zou, c'est fini pour le scheduler, on passe au fichier stream.xml .

[modifier] Stream404

C'est le fichier de conf de stream404 (qu'on a collé aussi dans /etc/radio)

<?xml version="1.0"?>
<stream404:Configuration xmlns:stream404="http://www.icecast.org/projects/ices">
 <Playlist># On declare la premiere facon de streamer la musique.
 # Ici, on récupere ce qui arrive de stream404
   <File>/etc/playlist.txt</File>
   <Randomize>1</Randomize>
   <Type>sql</Type>
   <Module>stream404</Module>
   <Crossfade>5</Crossfade>
 </Playlist>
 <BackupPlaylist>
# Idem mais c'est la playlist de secours qui recupere le contenu de /etc/playlist.txt
# Attention aux droits. Si vous avez des doutes, mettez ca dans le rep/ du user (ex : ~/logs/playlist.txt)
 <File>/etc/playlist.txt</File>
   <Randomize>1</Randomize>
   <Type>builtin</Type>
   <Module>stream404</Module>
 </BackupPlaylist>
   <Execution>
   <Background>0</Background>
   <Verbose>1</Verbose>
   <BaseDirectory>/tmp</BaseDirectory>
 </Execution>
 <Sql>
# Idem que la section sql précédente
   <Hostname>localhost</Hostname>
   <Port>3306</Port>
   <Sqltype>MYSQL</Sqltype>
   <User>adminbddradio</User>
   <Password>pwdadminradio</Password>
   <Database>nomdelabaseradio</Database>
t_streamstack
   <UrgTable>t_pilotstack</UrgTable>
   <CurrentStreamTable>t_currentstream</CurrentStreamTable>
   <StreamLogTable>t_streamlog</StreamLogTable>
   <MetadataTable>t_metadata</MetadataTable>
 </Sql>
 <Stream>
# Definition du premier stream. Ici un 64 Kbps
       <Server>
       <Hostname>www.mabelleradioquiroxe.net</Hostname>

# Le port défini tout à l'heure dans icecast.xml <Port>8000</Port>

       # Le mot de passe d'encodeur
       <Password>motdepasseachanger</Password>
       <Protocol>http</Protocol>
       <Format>ogg</Format>
       </Server>
       # Le point de montage de votre flux

<Mountpoint>/belleradio64.ogg</Mountpoint>

       # Le nom de votre flux

<Name>Ma belle Radio qui Roxe - 64 Kbps</Name>

       # Genre de votre radio/stream
       <Genre>Hard Rock</Genre>
       # Description longue de votre flux
       <Description>Ma Belle Radio, la radio qu'elle est belle</Description>
       # L'url de votre site
       <URL>http://www.mabelleradioquiroxe.net</URL>
       <Public>1</Public>
       # Les options du stream
       <Quality>2</Quality>
       <Bitrate>64</Bitrate>
       <Reencode>1</Reencode>
       <Samplerate>44100</Samplerate>
       <Channels>2</Channels>
 </Stream>
</stream404:Configuration> 

Voila, vous avez le minimum pour commencer a faire du bruit. Si vous recopiez les fichiers de confs, n'oubliez pas de virer les é,ç,à,& et autres.

Et maintenant ? Et maintenant quoi ? Ne me dites pas qu'en plus vous voulez utiliser tout ca !?

Bon OK. Icecast se lance sous root avec la ligne de commande suivante (pour mémoire on est toujours sous debian)

 su icecast2 "/etc/init.d/icecast2 start"mediabox404 et stream404 se lancent sous le compte radio
 /usr/local/bin/mediabox404_prg /etc/radio/mediabox_prg.xml > /dev/null &
 /usr/local/bin/stream404 -c /etc/radio/stream.xml > /dev/null &

Pour déboguer le bestiau, lancez, au début, les commandes sans le " > /dev/null &". Ca vous permettra de voir ce qu'il se passe. Vous pourrez vous passer du -c aux lancements suivants...

Partenaire
Outils personnels