Ce document traite de la mise en place d'un serveur de streaming audio en ogg vorbis sur une distribution Gentoo. Cela doit être aussi valable pour tout autre distribution mais je ne le traiterai pas ici... A vous de faire l'effort de transcrire.
Comme il s'agit pour ma part d'une utilisation purement personnel, il est possible que quelques parties vous soient inutiles. Ainsi, j'utilise ReverseProxy d'Apache afin de pouvoir accéder au flux via le port 80. De plus, j'ai aussi configuré IceCast pour demander une authentification par mot de passe afin d'être le seul à pouvoir accéder au flux. Enfin, je souhaite pouvoir contrôler la lecture en cours par interface http. Pour cela, j'utiliserai PhpMP.
Afin de travailler sur des versions plus récentes, nous allons ajouter mpd et IceCast en ~arch dans package.keywords
echo "net-misc/icecast ~amd64" >> /etc/portage/package.keywords echo "net-misc/mpd ~amd64" >> /etc/portage/package.keywords
Ceci est surtout nécessaire pour mpd qui dans sa version 12, laquelle n'est pas encore considéré stable, permet la diffusion de plusieurs flux mais surtout l'encodage à la volée en ogg vorbis avec diffusion vers un serveur IceCast.
Il nous faut ensuite vérifier les USE-flags pour ces deux paquets ainsi que pour PhpMP. Je vous laisse voir ça directement avec vos besoin sur votre système. N'oubliez pas "icecast" ainsi que "vorbis" pour mpd. Il est aussi probable que vous deviez recompiler php.
Vous pouvez dès lors lancer la commande magique:
emerge -avt mpd icecast phpmp
Vérifiez que tout est bon et lancez l'installation.
A partir de la version 2.3.1, IceCast tourne par défaut avec l'utilisateur icecast et le group nogroup. Afin qu'il puisse écrire dans les logs, nous devons donc changer les droits du dossier.
chown icecast:nogroup /var/log/icecast
La configuration d'IceCast s'effectue en partie dans un fichier xml. Ouvrez /etc/icecast2/icecast.xml avec votre éditeur favoris. Plusieurs modifications doivent être ici apportés.
La première chose à faire est de modifier les 3 instances du password hackme de <source-password>, <relay-password> et <admin-password>. Puis, comme nous l'avons mentionné plus haut, nous allons sécuriser l'accès au flux. Il s'agit d'abord de déclarer cela ici.
<mount> <mount-name>/mpd.ogg</mount-name> <authentication type="htpasswd"> <option name="filename" value="/chemin/absolu/vers/myauth"/> <option name="allow_duplicate_users" value="0"/> </authentication> </mount>
Notez le mount-name, nous l'utiliserons pour la configuration de mpd.
Pour les autres options, je vous laisse regarder la documentation et modifier pour votre cas.
Editer le fichier /etc/mpd.conf
Il y a beaucoup d'options. Nous allons procéder dans l'ordre et seulement pour les options nécessaires au bon fonctionnement de notre serveur de streaming.
music_directory "/le_repertoire/de_votre/musique"
audio_output {
type "shout"
name "my cool stream"
host "localhost"
port "8000"
mount "/mpd.ogg"
password "hackme"
# quality "7.0"
bitrate "64"
format "44100:16:2"
# Optional Paramters
user "source"
description "here's my long descriptiion"
genre "jazz"
}
C'est ici que nous réglons l'encodage et l'envoie du flux vers IceCast. Donc, pour le mount, vous mettez ce que vous avez mis précédement dans IceCast. Pareil pour le password (ici, on utilise l'utilisateur source). Régler le bitrate selon votre connexion. Enfin, format "44100:16:1" est le format audio du flux. Le premier chiffre est le taux d'échantillonnage en Hertz. Le second est le nombre de bits et enfin le troisième définit le nombre de canaux: 1 pour mono, 2 pour stereo.
Pour plus de précisions, je vous renvoie à la documentation :p
Il ne reste plus qu'à construire la base de données de mpd et ce sera bon pour cette partie (cela peut durer un moment selon le nombre de chanson dans vos répertoires).
/usr/bin/mpd --create-db
Les différentes configuations étant terminées, nous pouvons alors lancer tout ce beau monde, tester et finaliser.
/etc/init.d/mpd start && /etc/init.d/icecast restart
Si tout démarre sans problème, il nous faut dès lors rajouter un/des utilisateur(s). IceCast possède une interface d'administration : http://localhost:8000/admin/
Cherchez votre mountpoint et ajoutez vos utilisateurs.
Toujours dans votre navigateur : http://localhost/phpmp/
Cette interface légère (^^) va vous permettre de contrôler mpd (Si vous avez accès au ssh, ne vous privez pas d'installer ncmpc ou tout autre logiciel de contrôle pour mpd... ce n'est pas mon cas partout alors je contourne via http ici). Sélectionnez quelques chansons et lancez la lecture.
Enfin, sortez votre lecteur mp3 kivabieng (tous ne gèrent pas l'authentification... vous trouverez une liste non exhaustive de ceux la gérant dans la documentation de IceCast) et ouvrez l'url vers votre flux: http://localhost:8000/mpd.ogg
Après authentification, cela devrait fonctionner... Si ce n'est pas le cas, consulter les logs :/