À propos du projet
Audioserve est un serveur audio personnel écrit en Rust qui diffuse des fichiers audio directement depuis des structures de répertoires. Il est destiné principalement aux livres audio, bien que toute collection de dossiers bien organisée fonctionne. La conception met l'accent sur la simplicité et une approche minimaliste.
Médiathèque : Audioserve parcourt le système de fichiers plutôt que de s'appuyer sur des balises audio, donc la structure de dossiers que vous créez est ce que vous voyez. Les mises en page recommandées incluent auteur/livre ou auteur/série/livre. Les fichiers peuvent être ordonnés naturellement, donc le remplissage numérique est facultatif. Les images de couverture et les fichiers de description placés dans les dossiers sont utilisés pour l'affichage, et la recherche couvre les noms de dossiers. Plusieurs collections peuvent être passées comme arguments de ligne de commande séparés.
Mise en cache : Les données de collection sont mises en cache dans une base de données clé-valeur intégrée (sled), ce qui accélère la recherche et le chargement des dossiers contenant de nombreux fichiers. La première analyse peut prendre du temps pour les grandes collections. Les modifications sont surveillées via inotify par défaut, et une nouvelle analyse complète peut être forcée avec un signal ou l'argument --force-cache-update. Les collections individuelles peuvent se désinscrire avec :no-cache, au prix d'une recherche plus lente et d'aucun partage de position.
Livres audio à fichier unique : Les fichiers .m4b et similaires avec métadonnées de chapitres sont présentés comme des dossiers contenant des fichiers de chapitres virtuels. Les chapitres peuvent également être générés à partir de la durée ou fournis via un fichier .chapters CSV. Les sous-dossiers CD peuvent éventuellement être fusionnés dans le dossier parent.
Positions de lecture : Les clients du même groupe d'appareils peuvent partager les positions de lecture via une connexion WebSocket, permettant la continuation sur un autre appareil. Les positions peuvent être sauvegardées en JSON et restaurées. Les dossiers terminés sont marqués en fonction de la dernière position d'écoute.
Sécurité : L'accès est contrôlé par un secret partagé ; il n'y a pas d'utilisateurs nommés. Le secret est envoyé comme un hachage salé, et le serveur émet des jetons pour les requêtes suivantes. TLS est pris en charge directement ou via un proxy inverse, et la limitation de débit est disponible. Les fichiers cachés sont bloqués dans l'API.
Transcodage et performances : Audioserve peut transcoder l'audio à des débits inférieurs, avec un cache de transcodage facultatif. Il prend en charge la compression des réponses et HTTP/2.
Clients et API : Un client web PWA moderne (TypeScript/Svelte) est inclus, ainsi qu'un ancien client web et un client Android. Une API HTTP documentée permet des clients personnalisés.
Installation : Les options incluent des images Docker, des builds Linux statiques, des builds locaux et la compilation avec des fonctionnalités optionnelles telles que collation, tags-encoding, shared-positions, transcoding-cache et behind-proxy.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.