عن المشروع

swyh-rs هو إعادة تنفيذ بلغة Rust بترخيص MIT لفكرة Stream-What-You-Hear (SWYH) الأصلية: يلتقط الصوت الذي يتم تشغيله حاليًا على جهاز كمبيوتر يعمل بنظام Windows أو Linux ويبثه إلى مشغلات الموسيقى الشبكية. كتب المؤلف هذا المشروع جزئيًا لتعلم Rust، ولأن النسخة الأصلية كانت مقتصرة على Windows، وكانت تواجه مشاكل مع بعض المشغلات، وكانت تحمل تسربًا في الذاكرة من مكتبة .NET UPnP قديمة. كيف يعمل: عند بدء التشغيل، يلتقط الصوت من المصدر المحدد (WasApi على Windows، ALSA على Linux) عبر مكتبة cpal، ويبدأ خادم بث HTTP مدمجًا على منفذ قابل للتكوين (الافتراضي 5901)، ويشغل اكتشاف SSDP للعثور على مشغلات UPnP/DLNA/OpenHome على الشبكة المحلية، ويعرض زرًا لكل مشغل تم اكتشافه. النقر على زر يوجه المشغل (OpenHome أو AVTransport) لتشغيل البث. يتم إعادة تشغيل الاكتشاف بشكل دوري في الخلفية. منذ الإصدار 1.21.0، يتحدث أيضًا بروتوكول SlimProto مباشرة، بحيث يتم اكتشاف عملاء squeezelite والتحكم بهم دون الحاجة إلى Logitech Media Server/Lyrion. تنسيقات البث تكون بدون فقدان فقط: FLAC بدقة 16/24 بت (المفضل)، WAV، RF64 وLPCM (audio/l16). لا يوجد إعادة ترميز ضائعة MP3/AAC. يتم بث الصوت بمعدل العينة للمصدر. يمكن الوصول إلى البث أيضًا كعنوان URL لراديو إنترنت محلي مثل http://{ip}:5901/stream/swyh.flac، مع معلمات استعلام لعمق البت ووضع حجم البث. الواجهة الرسومية (fltk-rs) تحتوي على علامات تبويب الصوت والشبكة والتطبيق والحالة. تشمل الخيارات مصدر الصوت ومعدل العينة، تنسيق البث، وضع 24 بت، خمسة أوضاع لتقسيم HTTP/Content-Length، التخزين المؤقت الأولي، تشويش TPDF لـ 16 بت، حقن الصمت للحفاظ على اتصال المشغلات، اختيار واجهة الشبكة، منفذ HTTP، فترة SSDP (0 يعطل الاكتشاف لوضع الخدمة فقط)، تشغيل الاكتشاف يدويًا، لغة الواجهة والمظهر، مستوى السجل، الاستئناف التلقائي، إعادة الاتصال التلقائي، مراقب مستوى RMS، وتمكين/تعطيل SlimProto. يمكن إخفاء أزرار المشغلات بالنقر بزر الماوس الأيمن؛ يظهر شريط تمرير الصوت عند الدعم، وسحب مع Shift ينسخ مستوى الصوت إلى جميع المشغلات النشطة. يمكن تشغيل حالات متعددة بملفات إعداد منفصلة لبث مصادر مختلفة إلى مستقبلات مختلفة في وقت واحد. ملاحظات التوافق في README تذكر الاختبار مع MoOde، Volumio، Denon Heos، Sonos، Roon، Yamaha، Kef، Chromecast عبر Bubble UPnP، Squeezebox/squeezelite وغيرها، مع تحفظات خاصة بالتنسيق وحجم البث لكل جهاز. تشمل المشكلات المعروفة متطلبات جدار الحماية/المنفذ (5901 لـ HTTP، 3483 لـ SlimProto)، إعداد مراقبة الصوت على Linux، تأخير تحليل FFMPEG لمدة 5 ثوانٍ مع WAV/RF64/LPCM على مشغلات MPD، ومتطلب VCRUNTIME140.dll على تثبيتات Windows الجديدة. يتم توفير ملفات ثنائية لـ Windows x86/64 وتطبيقات Linux؛ روابط ARM من طرف ثالث. المشروع صغير في استخدام الموارد (أقل من 8 ميجابايت من الذاكرة تقريبًا) ويتضمن ملفًا ثنائيًا لواجهة الأوامر وأيقونة علبة Python مجتمعية.