इस प्रोजेक्ट के बारे में

swyh-rs, मूल Stream-What-You-Hear (SWYH) विचार का MIT-लाइसेंस प्राप्त Rust पुनःकार्यान्वयन है: यह Windows या Linux PC पर वर्तमान में चल रहे ऑडियो को कैप्चर करता है और इसे नेटवर्क म्यूजिक प्लेयर्स पर स्ट्रीम करता है। लेखक ने इसे आंशिक रूप से Rust सीखने के लिए लिखा, और क्योंकि मूल केवल Windows-only था, कुछ रेंडरर्स के साथ समस्या थी, और पुरानी .NET UPnP लाइब्रेरी से मेमोरी लीक था। यह कैसे काम करता है: स्टार्टअप पर यह चयनित स्रोत (Windows पर WasApi, Linux पर ALSA) से cpal लाइब्रेरी के माध्यम से ऑडियो कैप्चर करता है, कॉन्फ़िगर करने योग्य पोर्ट (डिफ़ॉल्ट 5901) पर अंतर्निहित HTTP स्ट्रीमिंग सर्वर शुरू करता है, LAN पर UPnP/DLNA/OpenHome रेंडरर्स खोजने के लिए SSDP डिस्कवरी चलाता है, और प्रत्येक खोजे गए रेंडरर के लिए एक बटन दिखाता है। बटन क्लिक करने पर रेंडरर (OpenHome या AVTransport) को स्ट्रीम चलाने का निर्देश दिया जाता है। डिस्कवरी पृष्ठभूमि में समय-समय पर दोबारा चलती है। 1.21.0 से यह सीधे SlimProto प्रोटोकॉल भी बोलता है, इसलिए squeezelite क्लाइंट्स को Logitech Media Server/Lyrion की आवश्यकता के बिना खोजा और नियंत्रित किया जाता है। स्ट्रीमिंग फॉर्मेट केवल लॉसलेस हैं: 16/24-बिट FLAC (पसंदीदा), WAV, RF64 और LPCM (audio/l16)। कोई लॉसी MP3/AAC पुनः-एन्कोडिंग नहीं। ऑडियो स्रोत सैंपल रेट पर स्ट्रीम किया जाता है। स्ट्रीम स्थानीय इंटरनेट रेडियो URL जैसे http://{ip}:5901/stream/swyh.flac के रूप में भी उपलब्ध है, जिसमें बिट डेप्थ और स्ट्रीम साइज़ मोड के लिए क्वेरी पैरामीटर हैं। GUI (fltk-rs) में Audio, Network, App और Status टैब हैं। विकल्पों में ऑडियो स्रोत और सैंपल रेट, स्ट्रीमिंग फॉर्मेट, 24-बिट मोड, पांच HTTP चंकिंग/Content-Length मोड, प्रारंभिक बफरिंग, 16-बिट के लिए TPDF डिदरिंग, रेंडरर्स को जुड़े रखने के लिए inject-silence, नेटवर्क इंटरफेस चयन, HTTP पोर्ट, SSDP अंतराल (0 केवल-सर्व मोड के लिए डिस्कवरी अक्षम करता है), मैनुअल डिस्कवरी ट्रिगर, UI भाषा और थीम, लॉग स्तर, ऑटो-रिज्यूम, ऑटो-रीकनेक्ट, RMS लेवल मॉनिटर, और SlimProto सक्षम/अक्षम शामिल हैं। रेंडरर बटन को राइट-क्लिक करके छिपाया जा सकता है; समर्थित होने पर वॉल्यूम स्लाइडर दिखाई देता है, और Shift-ड्रैग करने पर वॉल्यूम सभी सक्रिय रेंडरर्स पर कॉपी हो जाता है। अलग-अलग कॉन्फ़िग फ़ाइलों के साथ कई इंस्टेंस चलाए जा सकते हैं ताकि विभिन्न स्रोतों को विभिन्न रिसीवर्स पर एक साथ स्ट्रीम किया जा सके। README में संगतता नोट्स में MoOde, Volumio, Denon Heos, Sonos, Roon, Yamaha, Kef, Bubble UPnP के माध्यम से Chromecast, Squeezebox/squeezelite और अन्य के साथ परीक्षण का उल्लेख है, साथ में डिवाइस-विशिष्ट फॉर्मेट और स्ट्रीम-साइज़ चेतावनियां हैं। ज्ञात समस्याओं में फ़ायरवॉल/पोर्ट आवश्यकताएं (HTTP के लिए 5901, SlimProto के लिए 3483), Linux ऑडियो मॉनिटरिंग सेटअप, MPD-आधारित प्लेयर्स पर WAV/RF64/LPCM के साथ 5-सेकंड FFMPEG विश्लेषण देरी, और नए Windows इंस्टॉल पर VCRUNTIME140.dll आवश्यकता शामिल हैं। Windows x86/64 और Linux appimages के लिए बाइनरी उपलब्ध हैं; ARM बिल्ड तीसरे पक्ष से लिंक किए गए हैं। परियोजना संसाधन उपयोग में छोटी है (लगभग 8 MB से कम RAM) और इसमें एक CLI बाइनरी और एक समुदाय Python ट्रे आइकन शामिल है।