Créer une webradio avec Airtime

De Centre de Ressources Numériques - Labomedia
Révision de 27 novembre 2017 à 00:34 par Benjamin (discussion | contributions) (Ubuntu 16.04 dans container LXC)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

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

Screenshot540-Now playing 250.png

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)

Airtimelog.png

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.

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/"

Rescan repdepartage.png


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

Mixxx.png

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

Mixxx configlive.png

Coté Airtime, la configuration ressemble à ça :

Airtime-configlive.png

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".

WP 20170202 11 25 34 Pro-1.jpg

ToDoux

Questions

Workflow

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

  • 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

Configuration proxy sous XFCE