======Créer une webradio avec Airtime====== ===== 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 {{media_12:screenshot540-now_playing_250.png|centré centré}} ===== 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://172.16.0.20:3128/]] " http_proxy="[[http://172.16.0.20:3128/| http://172.16.0.20:3128/]] " https_proxy="[[http://172.16.0.20:3128/| 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| 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/| http://ftp.fr.debian.org/debian/]]  jessie main contrib non-free deb-src [[http://ftp.fr.debian.org/debian/| http://ftp.fr.debian.org/debian/]]  jessie main contrib non-free \\ deb [[http://security.debian.org/| http://security.debian.org/]]  jessie/updates main contrib non-free deb-src [[http://security.debian.org/| http://security.debian.org/]]  jessie/updates main contrib non-free \\ # jessie-updates, previously known as 'volatile' deb [[http://ftp.fr.debian.org/debian/| http://ftp.fr.debian.org/debian/]]  jessie-updates main contrib non-free deb-src [[http://ftp.fr.debian.org/debian/| 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| 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) {{media_02:airtimelog.png|fig:centré}} ===== 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. {{media_12:smartblock_world.png|Smartblock_world.png Smartblock_world.png}} ==== 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/" {{media_12:rescan_repdepartage.png|Rescan repdepartage.png Rescan repdepartage.png}} \\ ===== Faire un direct avec Mixxx ===== On peut tout à fait réaliser un direct avec le logiciel libre [[http://mixxx.org/|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 {{media_09:mixxx.png|centré centré}} ==== 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** {{media_09:mixxx_configlive.png|fig:centré}} Coté Airtime, la configuration ressemble à ça : {{media_02:airtime-configlive.png|fig:centré}} ===== 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| 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/| http://172.16.0.20:3128/]] "; * ajout d'un fichier /etc/apt/apt.conf.d/01proxy contenant la ligne suivante: Acquire::[[http::Proxy| http::Proxy]]  "[[http://172.16.0.20:3128/| 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/| 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". {{:WP_20170202_11_25_34_Pro-1.jpg?990|WP_20170202_11_25_34_Pro-1.jpg WP_20170202_11_25_34_Pro-1.jpg}} ===== 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 ? * http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/stream-player-for-your-website/ * http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/exporting-the-schedule/ === Complément de configurations === * retagguer les mp3 en ligne de commande ? * [[https://packages.debian.org/jessie/picard| 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/ === Configuration proxy sous XFCE === * https://forum.ubuntu-fr.org/viewtopic.php?id=96356 {{tag>bj logiciels_audio web radio}}