Pour éditer le wiki, il faut demander un compte à un Lapin !

WebRadio libre

From Le L∞p's Wiki
Revision as of 14:52, 27 February 2015 by ToM (Talk | contribs) (fix urls, mini update)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Les copains de la Gare XP font tourner une webradio. À l'origine, la mise en œuvre était 100% propriétaire, et ils souhaitaient changer ça. À vrai dire, ce ne sont pas les seuls à exprimer ce besoin, c'est pourquoi il peut être intéressant de travailler sur la mise en place d'une webradio basée sur des solutions libres, afin que tout le monde puisse en profiter (et, soyons fous, mutualiser les connaissances et les ressources).

Emission spéciale Hackerspaces
Attention.png Attention : Cette page décrit le projet tel qu'il a été imaginé avant la mise en œuvre. Entre temps, un wiki spécifique a été mis en place ; il faudrait remanier mettre à jour cette page, et compléter le wiki de la Radio.

Situation d'origine

La Radio XP est diffusée depuis un Mac G4, à l'aide du logiciel Butt, vers un serveur de diffusion hébergé par Icreo.

C'est Matthieu@GareXP qui gère et coordonne la radio au sein de la Gare.

La radio est accessible via la page dédiée du site de la Gare, et bien entendu par tout client multimédia si on utilise l'adresse du serveur Icreo.

Mac G4

Pourquoi un Mac G4 : parce que c'est ce qu'ils avaient sous la main, et qu'il y a un Apple Fan Boy dans la place.

Butt

Parce que son interface est (très) simple, et qu'il donne une indication visuelle de l'état du flux facile à comprendre pour tout le monde.

Icone information.png Note : butt ne sait pas préciser un login, il faut donc configurer le stream d'en face avec le login par défaut : source.

Icreo

Parce qu'il fallait trouver quelque chose de fiable rapidement et que personne ne se sentait capable de mettre autre chose en place.

La formule souscrite est l'offre Basic. 10 Go de stockage, 100 utilisateurs, 192 kbps.

Une capture d'écran des statistiques générées par Icreo : http://pix.toile-libre.org/upload/original/1358342394.png
Pas forcement représentatif vu que les fêtes de fin d'année ont fait le vide, aussi bien chez les auditeurs que dans la programmation.

Les soucis rencontrés

Stockage

Les 10 Go de stockage permettent d'alimenter la radio lorsqu'aucun flux n'est en cours de diffusion. Le souci, c'est que 10 Go, ça fait pas beaucoup, et la radio tourne vite en boucle.

Une méthode Rache‏‎ serait de faire un script qui, régulièrement, vire des fichiers du FTP et les remplace par d'autres. Ce script serait utile dès aujourd'hui, et sera peut-être utile pour la future configuration.

Fonctionnalités

Certaines fonctionnalités ne sont pas disponibles sans multiplier la facture :

  • Lecteur radio à placer sur le site Web
  • Programmation d'émissions pré-enregistrées
  • Pas d'API : impossibilité d'automatiser certaines tâches
  • (plein d'autres qui m'échappent sur le moment)

Prix

20 euros, c'est pas la mort mais ils seraient mieux employés à financer un serveur (VPS ou autre). Si on peut les éviter, c'est encore mieux car certains lieux n'ont pas forcement le budget de la Gare ou de La Suite, par exemple.

Cahier des charges

  • Diffusion de fichiers lorsqu'aucun flux en direct n'est en cours
  • Enregistrement des directs
  • Programmation d'émissions pré-enregistrées
  • Lecteur radio à placer sur le site
  • Possibilité d'utiliser un sous-domaine radio.garexp.org.
  • Interface simplifiée disponible pour les animateurs radio qui doivent s'en servir alors qu'ils ne connaissent rien à la technique sous-jacente
  • Embrayage/débrayage du stream live
  • Suivi des auditeurs

Contraintes

  • La source du flux est derrière la Freebox, et doit se battre avec les flux Bittorrent et autres congestions du réseau local. On est censés mettre en place une seconde connexion, qui sera utilisée pour les Services Essentiels Et Autres Trucs Sérieux, laissant la première connexion se démerder avec les flux Facebook et autres futilités. Mais pour l'instant, ce n'est pas fait.
  • L'utilisateur néophyte doit pouvoir débrayer le flux "passif" (fichiers MP3) et passer en mode "direct" facilement. Les animateurs de la radio ne sont pas tous des geeks !

Étude

La mise en œuvre imaginée se base sur Icecast et Airtime :

 ALSA/PulseAudio/Jack/etc --> Icecast --> Airtime
 \____________________________________/ \________/
           Réseau local                  Internet

Les fichiers MP3 sont stockés en local, ce qui permet d'en mettre autant qu'on à d'espace de stockage disponible. Étant sur le réseau local, on peut profiter de la rapidité de transfert, et pourquoi pas de ressources partagées sur le réseau.

La carte son envoie son flux au serveur Icecast, qui lui-même l'envoie au serveur Airtime.

Les clients se connectent sur le serveur Airtime.

Fonctionnalités Airtime

Par rapport au cahier des charges, ces points ont besoin d’être examinés de plus près :

  • Suivi des auditeurs : pas simple à trouver, pas complet ?
  • Interface simplifiée ?
  • Stream par défaut : lorsqu'aucun stream n'est programme il faut balancer du son depuis la bibliothèque. Ça pourrait se faire en programmant des playlists, mais il serait plus pratique d'avoir une fonction qui envoie du random quand rien n'est programmé.

État du projet

Capslock a fait le gros du boulot, et le serveur commence à trouver ça agréable.

Un wiki spécifique à ce projet a été mis en place pour documenter l'ensemble : http://radio.garexp.org/wiki/

Solution technique

(cette section est à migrer sur le wiki de la Radio XP)

Lecteur à intégrer sur un site Web

Chez SourceFabric (l'éditeur d'Airtime) ils proposent d'utiliser jPlayer. jPlayer est un plugin jQuery pour créer un lecteur HTML5 avec un fallback Flash pour IE.

La configuration est super simple. Exemple pour exploiter le flux ogg :

$(document).ready(function(){
        $("#jquery_jplayer_1").jPlayer({
                ready: function () {
                        $(this).jPlayer("setMedia", {
                                oga: "http://radioxp.leloop.org:8000/ogg"
                        }).jPlayer("play");
                },
                ended: function (event) {
                        $(this).jPlayer("play");
                },
                swfPath: "js",
                supplied: "oga"
        });
});

Gros avantage de cette solution: il est très aisé de customiser l'apparence de ce lecteur.