URL: https://linuxfr.org/users/superzen/journaux/taliesin-serveur-de-streaming-audio Title: Taliesin, serveur de streaming audio Authors: Babelouest Date: 2017年12月15日T02:20:38+01:00 License: CC By-SA Tags: streaming, langage_c, rest, libav, reactjs et c Score: 19 Dernier né de mon interface chaise-clavier, le besoin est de pouvoir écouter de n'importe où la musique que je stocke et classe amoureusement depuis longtemps. D'autant plus que je me refuse toujours à prendre des abonnements auprès des services payants comme Spotify ou [Google|Apple] Music. Également, je souhaite pouvoir déporter la lecture des flux audio sur des lecteurs externes comme VLC, ainsi que les différents Raspberry PI qui peuplent ma demeure et qui hébergent entre autres un service MPD. Depuis quelques années, je combinais l'utilisation de liquidsoap/icecast pour me faire une webradio de toute ma musique, et également subsonic pour écouter ma musique à la demande. Les deux ont rempli leur rôle avec plus ou moins de succès, mais avec le temps, j'ai eu envie d'avoir un système de webradio plus souple, et également de pouvoir jouer la musique que je veux dans chaque pièce de la maison. Voilà donc le fruit de mon labeur, un logiciel que j'ai appelé Taliesin, emprunté au nom d'un barde (entre autres choses) dans la mythologie celtique et la légende arthurienne. Il transcode en temps réel la musique qu'on lui demande de lire et balance tout ça dans un flux http au format qu'on lui aura demandé. Il se base sur [libav](https://libav.org/) pour la partie audio, le truc qu'on trouve sous ffmpeg notamment, ainsi que [Ulfius](https://github.com/babelouest/ulfius) dont j'avais [déjà parlé ici](https://linuxfr.org/users/superzen/journaux/ulfius-framework-pour-faire-des-api-web-en-c), qui s'occupe de la partie serveur HTTP et [Hoel](https://github.com/babelouest/hoel/) qui s'occupe de l'accès à la base de données (MariaDB ou SQLite3). Il ne s'occupe pas d'authentification parce qu'il préfère laisser ça à ceux qui savent le faire, et mange donc du token OAuth2 JWT qu'un [Glewlwyd](https://github.com/babelouest/glewlwyd) par exemple peut fournir pour s'assurer que l'utilisateur a bien le droit de lui parler. Il peut aussi fonctionner sans authentification si c'est vraiment ce que tu veux, mais gaffe. Seuls les flux audio en tant que tels n'utilisent pas de token OAuth2 pour l'authentification. En effet, les divers lecteurs qui sont capables de lire des flux comme VLC, MPD ou même la balise