Le tutoriel suivant explique comment configurer un serveur de streaming radio IceCast et lire des fichiers audio (musique ou podcasts) sur la plate-forme FreeBSD. Ce tutoriel suppose que vous exécutez FreeBSD 10.0 ou supérieur et que vous êtes connecté en tant qu'utilisateur root. Il supposait également que vous disposiez d'un éditeur de texte pour modifier les fichiers de configuration.
Avant de commencer, il est important de comprendre les trois parties d'un serveur de streaming audio. Tout d'abord, nous avons le logiciel serveur lui-même, IceCast. IceCast agit comme un hub central où les flux audio entrent et sont envoyés. Le service IceCast prend en charge les flux audio des clients source. Les clients sources sont des programmes qui lisent des fichiers audio ou d'autres sources audio, tels que des microphones. Dans notre exemple, le client source est Ices et il fournit un flux audio au serveur IceCast. Le troisième composant est un client à l'écoute. Les flux audio transitent du serveur IceCast vers les auditeurs qui entendent ensuite l'audio. Un client d'écoute est généralement une application de bureau, telle qu'un navigateur Web, le lecteur multimédia VLC ou WinAMP. Visuellement, l'arrangement ressemble à ceci:
Source client (Ices) --> IceCast server --> Listening client (browser)
Pour configurer un serveur de streaming IceCast sur FreeBSD, nous installons d'abord le logiciel serveur lui-même. Cela peut être fait en exécutant la commande suivante.
pkg install icecast2
Nous ouvrons ensuite le /etc/rc.conf
fichier et activons le service d'arrière-plan IceCast. Cela se fait en ajoutant le texte suivant au bas du /etc/rc.conf
fichier.
icecast_enable="YES"
Notre prochaine étape consiste à configurer le service IceCast. Le package IceCast est livré avec un exemple de fichier de configuration que nous pouvons modifier. Cet exemple de fichier se trouve dans le /usr/local/etc
répertoire. Nous allons faire une copie de cet exemple de fichier avant de le modifier.
cd /usr/local/etc
cp icecast.xml.sample icecast.xml
Nous voulons maintenant éditer quelques champs clés du icecast.xml
fichier. La plupart du fichier peut être laissé avec les paramètres par défaut, mais nous devons modifier les informations de connexion. Nous pouvons le faire en visitant l' authentification section (à la ligne 30) et en changeant la source de mot de passe et relais passe à quelque chose approprié. Ces mots de passe nous permettront de diffuser des données sur le serveur IceCast à partir d'un client source. Nous devons également changer les variables admin-user et admin-password en quelque chose d'unique à notre système. Ces deux informations d'identification protègent l'interface Web du serveur IceCast. Ensuite, vers la ligne 150, nous devons changer les variables nom-montage , nom d' utilisateur etmot de passe . Ces trois variables protègent le point de montage du serveur IceCast. Enfin, au bas du icecast.xml
fichier, nous devrions voir une section de sécurité qui a été commentée. Nous devons supprimer les symboles d' ouverture <- et de fermeture -> autour du paragraphe de sécurité . Une fois le icecast.xml
fichier modifié, enregistrez-le.
Une fois le fichier de configuration modifié, nous souhaitons activer la journalisation. Pour ce faire, exécutez les commandes suivantes.
mkdir /var/log/icecast
chown nobody:nogroup /var/log/icecast
Enfin, nous démarrons le serveur IceCast, ce qui amène le serveur à écouter les connexions client d'entrée et entrantes.
service icecast2 start
Le serveur IceCast est opérationnel et nous devons donc maintenant lui fournir quelque chose à jouer. Notre prochaine étape consiste à installer le client source Ices. FreeBSD n'offre actuellement pas de paquet binaire pour Ices, nous devons donc le construire à partir des ports. Cela peut être fait en exécutant les commandes suivantes.
portsnap fetch
portsnap extract
cd /usr/ports/audio/ices
make install
make clean
Le client source Ices aura besoin d'un compte utilisateur et d'une connexion. Pour créer un utilisateur pour le logiciel Ices et définir un mot de passe sur le compte, exécutez ces commandes.
pw groupadd ice
pw useradd ices -g ice -m
passwd ices
Une fois l'utilisateur créé, nous pouvons maintenant activer la journalisation pour Ices.
mkdir /var/log/ices
chown ices:ice /var/log/ices
À partir de là, nous ne devrions plus avoir besoin d'un accès root et nous pouvons fonctionner en tant qu'utilisateur ices . Ensuite, nous devons créer deux répertoires. Un répertoire music
,, contiendra les fichiers audio que nous allons diffuser. Le deuxième répertoire conf
,, contiendra nos fichiers de configuration.
su ices
cd /home/ices
mkdir music conf
cp /usr/local/share/ices/ices-playlist.xml conf/configuration.xml
Nous avons maintenant un exemple de fichier de configuration en place. Il est temps de modifier le conf/configuration.xml
fichier en fonction de notre environnement. Les seules parties du fichier que nous devons modifier se trouvent vers la ligne 60. Ici, nous devons fournir le mot de passe et l' emplacement de montage que nous avons définis dans le icecast.xml
fichier. Par exemple, si nous définissons notre nom de montage dans le icecast.xml
fichier comme étant /radio.ogg
, nous devons changer configuration.xml
le paramètre de montage de notre fichier pour qu'il soit également /radio.ogg
. Notre champ de mot de passeconfiguration.xml
doit correspondre au mot de passe source que nous avons créé dans le icecast.xml
fichier. Une fois notre configuration.xml
fichier édité, nous devrons enregistrer nos modifications.
Avec le fichier de configuration en place, l'étape suivante devrait être de copier les fichiers audio que nous souhaitons diffuser dans le music
répertoire. Les fichiers audio doivent tous être au .ogg
format car IceCast ne traitera pas les .mp3
fichiers avec ses paramètres par défaut. Une fois que tous les fichiers audio que nous souhaitons diffuser sont dans le music
répertoire, nous devons créer une liste de lecture. Une liste de lecture est un fichier texte avec une liste de la musique que nous voulons diffuser. Nous pouvons facilement créer une liste de lecture avec les commandes suivantes.
cd /home/ices/conf
ls -d ../music/*.ogg > playlist.txt
Les fichiers audio seront lus dans l'ordre où ils apparaissent dans le playlist.txt
fichier. Le fichier peut être édité dans n'importe quel éditeur de texte pour ajuster l'ordre de l'audio en streaming.
Tout ce que nous devons faire pour commencer à diffuser nos fichiers audio est d'exécuter cette commande.
ices configuration.xml
Note latérale: Souvent, nous pouvons vouloir exécuter le client source Ices, puis nous déconnecter et aller faire autre chose. Dans ce cas, j'aime exécuter Ices à partir d'une session d' écran . Voici un exemple sur la façon d'exécuter des glaces avec écran.
screen
cd /home/ices/conf
ices configuration.xml
Appuyez ensuite sur Ctrl + A et appuyez sur la touche D. Cela détachera la session écran et nous permettra de nous déconnecter pendant que Ices lit l'audio en arrière-plan. Plus tard, nous pouvons arrêter Ices en vous connectant et en exécutant:
screen -r
killall ices
exit
Nous pouvons maintenant nous connecter à notre serveur sur le port 8000 dans un navigateur Web pour écouter notre flux audio. L'URL ressemblera http://myservername:8000
. Cette adresse peut être rendue publique si vous souhaitez permettre à d'autres d'écouter le flux.
Plus tôt, j'ai mentionné que IceCast lit les .ogg
fichiers et non .mp3
. C'est assez facile à surmonter sur FreeBSD. En tant qu'utilisateur root, nous pouvons installer un outil de conversion, appelé sox , qui convertira nos .mp3
fichiers en .ogg
fichiers. En supposant que tous nos .mp3
fichiers se trouvent dans le /home/ices/music
répertoire, nous pouvons installer sox et effectuer une conversion comme suit:
pkg install sox
cd /home/ices/music
for i in *.mp3; do sox ./"$i" ./"$i".ogg; done
Nous pouvons ensuite actualiser notre playlist en utilisant:
cd ../conf
ls -d ../music/*.ogg > playlist.txt
N'oubliez pas que le streaming audio peut être gourmand en bande passante. Un ou deux clients écoutant notre station de radio n'auront pas besoin de beaucoup de bande passante, mais 50 clients ou plus pourraient pousser un serveur sur sa bande passante mensuelle allouée. C'est une bonne idée d'activer le plafonnement de la bande passante sur le serveur de streaming pour éviter des coûts financiers inattendus.