mardi 22 mars 2011

Software: VoIP ou Streaming audio

Pour écouter mes récepteurs à distance, j'ai développé il y a de cela quelques années RxIAX, une application Windows qui permet d'interfacer une carte son avec un serveur VoIP Asterisk via le protocole IAX2. Chaque récepteur est connecté à une carte son pilotée par une instance de cette application. Un numéro d'extension téléphonique est attribué à chacune de ces instances, lesquelles peuvent être configurées pour soit répondre automatiquement sur appel entrant, et donc mettre en communication le correspondant avec le récepteur associé, soit se connecter sur un serveur Asterisk au démarrage, auquel cas il est possible d'inscrire l'instance dans une salle de conférence autorisant ainsi l'écoute depuis plusieurs points.
La configuration mise en place à l'époque, et toujours active, est illustrée sur le synoptique précédent. Outre sa fonction première, l'application RxIAX permet d'enregistrer le flux audio au format MP3 en identifiant et en horodatant chaque segment. Elle permet aussi de télécommander le récepteur associé par le biais de codes DTMF envoyés depuis le clavier du téléphone ou du logiciel VoIP. Bien que parfaitement fonctionnelle, cette plate-forme requiert une infrastructure complexe - dont un serveur Asterisk - et nécessite d'utiliser un équipement d'accès spécifique, un téléphone ou une application VoIP. Elle impose par ailleurs une configuration dédiée de l'équipement de filtrage bien que l'usage du protocole IAX2 (transport UDP et port fixe) simplifie quelque peu cette configuration.

Une alternative que j'avais étudié à l'époque consistait à utiliser une application clef en main dans le domaine de la téléphonie, avec notamment Skype, ou de la diffusion sonore. Les essais effectués à l'époque avec Skype, TeamSpeak puis avec quelques serveurs de 'streaming' ne m'avaient pas convaincus: accès unitaire dans le cas de Skype, qualité de la diffusion avec TeamSpeak et complexité de la mise en oeuvre des
encodeurs avec les applications de streaming Open Source.

Les choses ont bien évolué en quatre ans avec notamment l'apparition de services de diffusion multimédia gratuits tel le service 'justin.tv'. Service gratuit, certes mais posant quelques problèmes de temps de latence sans parler du délai généré l'annonce publicitaire présentée à la connexion. Mes recherches m'ont conduit à tester différents services, différentes applications jusqu'à trouver il y a peu l'application presque idéale quoique commerciale: BroadWave Streaming Audio Server.

Idéale car d'un encombrement minimaliste - tant en mémoire qu'à l'écran - tout en offrant toutes les fonctions attendues: pilotage de plusieurs cartes sons, gestion de plusieurs streams - un par carte son, serveur Web embarqué, enregistrement des flux et fonctionnement autonome. Cerise sur le gâteau, l'éditeur offre la possibilité d'utiliser gratuitement son application à la seule condition que l'usager référence l'éditeur sur son site Web.

La mise en oeuvre est quasi-immédiate, la seule difficulté résidant dans le paramètrage du routeur d'accès. L'application BroadWave Streaming Server coexiste par ailleurs parfaitement avec les autres applications dédiées qui utilisent elles-aussi les mêmes cartes sons: RxIAX, EasyPal ou encore Wx2Img.
Le rêve avec cependant un problème inhérent à la diffusion de flux audio, celui de la latence et de la mise en mémoire cache, problème qui n'existe pas avec un protocole de VoIP comme IAX2. Avec cette application, la mémoire tampon représente entre 12s et 18s de flux audio. Il n'est pas possible de suivre une transmission en temps réel.
Le port TCP/88 est utilisé par défaut pour accéder au serveur de streaming mais il parfaitement possible de reconfigurer celui-ci. Attention toutefois, l'ouverture d'un tel accès peut mettre le système hôte en péril en cas de faille de sécurité ou de bogue exploitable dans le serveur WEB embarqué dans cette application. Ce risque pourra être minimisé en limitant les accès sur le routeur d'entrée aux seules machines distantes autorisée.