Icecast2 – Ices2
Référence: Ubuntu 22.04
Voici un résumé de mes notes d’installation pour un serveur ICECAST2 qui permet la diffusion sur le web ou en réseau local de sources diverses. Il faut donc un client qui connecte les sources locales vers le serveur. J’ai choisi ICES2 comme client, car il supporte la captation d’une carte de son ainsi que la réinjection STDIN (pipe) directement d’une autre application. La diffusion sera en OGG, c’est ce que permet ICES2.
Installer le serveur ICECAST2:
sudo apt install icecast2
Ajouter un fichier de configuration:
sudo nano /etc/icecast2/icecast.xml
Coller le contenu du fichier suivant en prenant soin de modifier les mots de passe « changeme » par un de votre choix
icecast.xml
Installer ensuite le client ICES2:
sudo apt install ices2
J’ai créé deux fichiers de configuration puisque je lance deux processus de ICES2.
Cette configuration sauvegarde le numéro de processus dans un fichier afin de pouvoir le tuer si nécessaire ou encore effectuer une mise à jour des métadonnées, car la commande:
kill -10 'pid'
Va déclencher celle-ci.
La configuration appelle l’envoi des métadonnées prévues pour chacune des diffusions. Celles-ci se trouvent dans un fichier spécifique à la source.
nano ~/ices2/metadata_98_5
title=98.5 FM artist=Animateurs en direct album=Voir l'horaire du diffuseur genre=Actualités url=https://www.985fm.ca/
nano ~/ices2/metadata_chromecast
title=Chromecast pour LMS artist=Variable selon la source de streaming album=Variable genre=streaming
La 1ʳᵉ configuration pour la diffusion audio seulement d’un Chromecast vidéo duquel, j’extrais l’audio pour le réintroduire dans une carte de son USB. Pour obtenir le bon nom pour la carte de son, simplement faire la commande suivante:
aplay -l
**** List of PLAYBACK Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC888-VD Analog [ALC888-VD Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 1: ALC888-VD Digital [ALC888-VD Digital] Subdevices: 0/1 Subdevice #0: subdevice #0 card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
Une seconde configuration pour un démodulateur FM NOOELEC pour une réinjection STDIN (PIPE) directement dans ICES2
Pour lancer chacun des processus:
Chromecast:
Créer un script de lancement dans le répertoire de votre choix:
nano chromecast_ices2_stream.sh
#/bin/bash pid1=$(cat /home/nas/ices2/ices_chromecast.pid) echo "ices2 $pid1" kill -15 $pid1 sleep 5 echo "Le processus PID $pid1 est maintenant terminé avec le code de sortie $?" ices2 /etc/ices2_chromecast_config.xml &
Le script va s’assurer de tuer le processus s’il tourne déjà
NOOELEC:
Créer un script de lancement dans le répertoire de votre choix:
nano rtl_fm_98-5_ices2_stream.sh
#/bin/bash pid0=$(pidof rtl_fm) pid1=$(cat /home/nas/ices2/ices_98_5.pid) echo "rtl_fm $pid0 et ices2 $pid1" kill -15 $pid0 kill -15 $pid1 sleep 5 echo "Les processus des PID $pid0 et $pid1 sont maintenant terminés avec le code de sortie $?" rtl_fm -M fm -s 200k -o 4 -A fast -r 48k -l 0 -E deemp -f 98.5M | ices2 /etc/ices2_98_5_config.xml &