Créer une webradio avec Airtime
Sommaire
Comment créer une web radio sur un réseau local ou Internet ?
Cette page documente la mise en place d'une application web "Airtime" qui permet de gérer une grille des programmes à partir de fichiers audio, de stream audio existants et de "lives" eux-mêmes sous la forme de stream audio ou alors issus d'un studio traditionnel branché sur l'entrée audio du serveur
Installation
Ubuntu 16.04
adaptation: fork LibreTime sous Ubuntu 16.04 LTS because sous debian pas d'import mp3 ni ogg et bug de l'interface web incorrigible.
proxy contournement via /etc/environnment
ftp_proxy="http://172.16.0.20:3128/" http_proxy="http://172.16.0.20:3128/" https_proxy="http://172.16.0.20:3128/" no_proxy="localhost,127.0.0.1,localaddress"
Ubuntu 16.04 dans container LXC
Pour contourner l'erreur git
git -c http.sslVerify=false clone https://github.com/LibreTime/libretime
Fixer les locales avant d'installer
locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=fr_FR.UTF-8 LANGUAGE= LC_CTYPE="fr_FR.UTF-8" LC_NUMERIC="fr_FR.UTF-8" LC_TIME="fr_FR.UTF-8"
Pour corriger cela :
locale-gen "en_CA.UTF-8" export LC_ALL="en_CA.UTF-8" export LANG="en_CA.UTF-8"
Il a fallu modifier ce fichier pour que l'install marche (régler l'erreur : UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 4258: ordinal not in range(128))
nano /usr/lib/python2.7/email/parser.py
Y ajouter :
# encoding=utf8 import sys reload(sys) sys.setdefaultencoding('utf8')
Debian jessie 8.5 stable ou debian stretch 9
Une fois la distribution installée, quelques compléments
su nano /etc/apt/sources.list
ajouter contrib non-free
deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.fr.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free # jessie-updates, previously known as 'volatile' deb http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free deb-src http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free
apt-get update lspci apt-get install sudo git adduser radio sudo
se relogguer
git clone https://github.com/sourcefabric/airtime.git cd Téléchargements/ cd airtime/
Pour Debian 8 : Attention ! pour que ça marche (que le calendrier apparaisse), il faut faire la modif suivante :
nano airtime/installer/lib/requirements-debian-jessie.apt
et remplacer postgresql et postgresql-client par :
postgresql-9.4 postgresql-client-9.4
ensuite, lancer l'install
sudo ./install
et suivre les instructions, soit se rendre à la racine de son serveur avec un navigateur avec une adresse du type http://192.168.0.109 (adapter en fonction de l'ip du serveur)
Une fois les étapes de config finalisées et les services relancés, on peut se connecter au Airtime : (admin/admin)
Utiliser Airtime
Documentation générale
Pour se servir d'Airtime et de la web radio, la suite pas encore documentée, voir pour l'instant par là : http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/on-air-in-60-seconds/
Pour se connecter au serveur :http://radio.local
log : admin pwd admin log : radio pwd radio
Créer une playlist "intelligente"
Une playlist intelligente (Smart Block) est une playlist qui se nourrit des morceaux de la bibliothèque, l'exemple ci-dessous montre comment constituer une playlist qui va dynamiquement se constituer à partir de tous les titres dont le "Genre" est "World" : si l'on replace cette playlist à différents moments, elle se reconstituera à partir d'une nouvelle sélection aléatoire de world music à chaque fois.
Ajouter de la musique via le répertoire de partage
La machine sur laquelle Airtime est installée dispose d'un répertoire partagé (samba) appelé "Partage_audio" (situé dans /home/radio/Partage_audio/). Airtime scanne ce répertoire et augmente la "Library" avec les morceaux qu'il y trouve.
Il est ainsi possible depuis un autre ordinateur sur le réseau local d'ajouter des morceaux de musique ou sons via le partage réseau.
Il peut être utile de relancer le scan du répertoire en cliquant sur la flèche circulaire située après "/home/radio/Partage_audio/"
Faire un direct avec Mixxx
On peut tout à fait réaliser un direct avec le logiciel libre Mixxx qui permet de mélanger des morceaux de musique avec un ou plusieurs micro selon la carte son de l'ordinateur qui sert pour le live
Une fois la configuration faite, dans Mixxx > Menu Options > "Activer la diffusion en direct (Broadcast)" et jouer un morceau de musique
Configurer Mixxx pour envoyer directement dans Airtime en tant que Mastersource
Voir la configuration ci-dessous : adapter l'adresse IP en fonction de la configuration locale
Coté Airtime, la configuration ressemble à ça :
Autres cas de figure
Utiliser Butt pour diffuser depuis un PC
Utiliser son téléphone pour diffuser
Sur Android, on peut utiliser l'app BroadcastMySelf
Utiliser Sox/Play pour diffuser en continu le stream issu d'Airtime
AUDIODEV=hw:1,0 play -G --buffer 65536 -t ogg http://radio.domaine:8000/airtime_128.ogg gain -3 highpass 120
- on joue sur le device hw:1,0 (la deuxième carte son)
- on bufferise à 65636 bites
- on enleve 3db de gain
- on met un filtre passe haut à 100Hz pour couper les basses qui ne passent pas en FM
user cases à developper
- quels usages envisagés?
Configuration ad hoc
topologie du réseau
- IP fixe du serveur: 172.16.0.44
- Range d'adresses fournies par le DHCP: 60-255
- Range d'adresses réservées: 50-59
- Sur le bureau , ajout d'un script proxy.sh permettant de configurer automagiquement le proxy des applis:
#!/bin/bash export http_proxy="http://172.16.0.20:3128/";
- ajout d'un fichier /etc/apt/apt.conf.d/01proxy contenant la ligne suivante:
Acquire::http::Proxy "http://172.16.0.20:3128/";
- Dans le navigateur, configurer la découverte automatique du proxy
Utilitaires
- script bash redemarrage.sh sur bureau pour relancer les services au cas où:
sudo invoke-rc.d airtime-liquidsoap stop sudo invoke-rc.d airtime-liquidsoap start sudo invoke-rc.d airtime-playout stop sudo invoke-rc.d airtime-playout start sudo invoke-rc.d airtime-media-monitor stop sudo invoke-rc.d airtime-media-monitor start sudo invoke-rc.d apache2 stop sudo invoke-rc.d apache2 start sudo invoke-rc.d rabbitmq-server stop sudo invoke-rc.d rabbitmq-server start sudo invoke-rc.d icecast2 restart
- Sur le bureau , ajout d'un script proxy.sh permettant de configurer automagiquement le proxy des applis:
#!/bin/bash export http_proxy="http://172.16.0.20:3128/";
Ce dernier script n'a pas l'air de fonctionner avec VLC par exemple.
Sauvegarde
En cas de crash, on peut restaurer le système dans son état initial via le logiciel Clonezilla en démarrant depuis la clé USB fournie. L'image disque à restaurer doit être stockée sur un disque externe. Il suffit de suivre les instructions de Clone zilla pour faire la restauration "depuis une image vers une partition disque".
ToDoux
Questions
Workflow
- identifier workflow production d'émission et directs :
- enregistrement en studio et passage à posteriori
- diffusion live, voir comment rec le live en question
- Site web en front ?
Complément de configurations
- retagguer les mp3 en ligne de commande ?
* https://packages.debian.org/jessie/picard a tester en client graphique
- émission entrée carte son ?
- documenter appli Android BroadcastMyself pour faire un direct avec un téléphone portable / tablette
- voir appli Butt pour streaming depuis un ordi https://sourceforge.net/projects/butt/
Troubleshouting et tests
- Troubleshouting http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/troubleshooting/ Ok depuis passage à LibreTime
- check solidité du déplacement retaillage de blocs dans l'agenda
- accès depuis windows session peris01 avec l'IP dans l'URL du fait que Bonjour ne soitpas présent sur Windows http://172.16.0.44
- Réglage de l'heure UTC vs Paris OK
- configuration samba http://www.framboise314.fr/partager-un-repertoire-sous-jessie-avec-samba/