À propos du projet
swyh-rs est une réimplémentation en Rust, sous licence MIT, de l'idée originale Stream-What-You-Hear (SWYH) : il capture l'audio en cours de lecture sur un PC Windows ou Linux et le diffuse vers des lecteurs de musique en réseau. L'auteur l'a écrit en partie pour apprendre Rust, et parce que l'original était réservé à Windows, rencontrait des problèmes avec certains lecteurs et traînait une fuite de mémoire héritée d'une ancienne bibliothèque UPnP .NET.
Fonctionnement : au démarrage, il capture l'audio depuis la source sélectionnée (WasApi sous Windows, ALSA sous Linux) via la bibliothèque cpal, démarre un serveur de streaming HTTP intégré sur un port configurable (5901 par défaut), exécute la découverte SSDP pour trouver les lecteurs UPnP/DLNA/OpenHome sur le réseau local, et affiche un bouton par lecteur découvert. Un clic sur un bouton demande au lecteur (OpenHome ou AVTransport) de lire le flux. La découverte est relancée périodiquement en arrière-plan. Depuis la version 1.21.0, il parle aussi directement le protocole SlimProto, de sorte que les clients squeezelite sont découverts et contrôlés sans avoir besoin de Logitech Media Server/Lyrion.
Les formats de streaming sont uniquement sans perte : FLAC 16/24 bits (préféré), WAV, RF64 et LPCM (audio/l16). Aucun réencodage avec perte MP3/AAC. L'audio est diffusé à la fréquence d'échantillonnage de la source. Le flux est également accessible comme URL de radio internet locale, par exemple http://{ip}:5901/stream/swyh.flac, avec des paramètres de requête pour la profondeur de bits et le mode de taille de flux.
L'interface graphique (fltk-rs) comporte les onglets Audio, Network, App et Status. Les options incluent la source audio et la fréquence d'échantillonnage, le format de streaming, le mode 24 bits, cinq modes de découpage HTTP/Content-Length, la mise en mémoire tampon initiale, le dithering TPDF pour le 16 bits, l'injection de silence pour maintenir les lecteurs connectés, la sélection de l'interface réseau, le port HTTP, l'intervalle SSDP (0 désactive la découverte pour le mode serveur seul), le déclenchement manuel de la découverte, la langue et le thème de l'interface, le niveau de journalisation, la reprise automatique, la reconnexion automatique, le moniteur de niveau RMS, et l'activation/désactivation de SlimProto. Les boutons des lecteurs peuvent être masqués par un clic droit ; un curseur de volume apparaît lorsqu'il est pris en charge, et un glisser-déposer avec Shift copie le volume vers tous les lecteurs actifs. Plusieurs instances peuvent fonctionner avec des fichiers de configuration distincts pour diffuser différentes sources vers différents récepteurs simultanément.
Les notes de compatibilité du README mentionnent des tests avec MoOde, Volumio, Denon Heos, Sonos, Roon, Yamaha, Kef, Chromecast via Bubble UPnP, Squeezebox/squeezelite et d'autres, avec des réserves propres à chaque appareil concernant le format et la taille du flux. Les problèmes connus incluent les exigences de pare-feu/ports (5901 pour HTTP, 3483 pour SlimProto), la configuration de la surveillance audio sous Linux, un délai d'analyse FFMPEG de 5 secondes avec WAV/RF64/LPCM sur les lecteurs basés sur MPD, et une dépendance à VCRUNTIME140.dll sur les installations Windows neuves. Des binaires sont fournis pour Windows x86/64 et des appimages Linux ; les builds ARM sont liés depuis un tiers. Le projet utilise peu de ressources (environ moins de 8 Mo de RAM) et inclut un binaire CLI et une icône de barre d'état Python communautaire.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.