このプロジェクトについて

swyh-rsは、オリジナルのStream-What-You-Hear(SWYH)のアイデアをMITライセンスでRustにより再実装したものです。WindowsまたはLinux PCで現在再生中のオーディオをキャプチャし、ネットワーク音楽プレイヤーへストリーミングします。作者がこれを書いた理由の一部はRustを学ぶためであり、またオリジナルがWindows専用で、一部のレンダラーで問題があり、古い.NET UPnPライブラリに由来するメモリリークを抱えていたためです。 仕組み:起動時に、選択したソース(WindowsではWasApi、LinuxではALSA)からcpalライブラリ経由でオーディオをキャプチャし、設定可能なポート(デフォルト5901)で内蔵HTTPストリーミングサーバーを開始し、SSDPディスカバリを実行してLAN上のUPnP/DLNA/OpenHomeレンダラーを見つけ、検出されたレンダラーごとにボタンを表示します。ボタンをクリックすると、レンダラー(OpenHomeまたはAVTransport)にストリームを再生するよう指示します。ディスカバリはバックグラウンドで定期的に再実行されます。1.21.0以降ではSlimProtoプロトコルも直接話すため、Logitech Media Server/Lyrionを必要とせずにsqueezeliteクライアントを検出して制御できます。 ストリーミング形式はロスレスのみです:16/24ビットFLAC(推奨)、WAV、RF64、LPCM(audio/l16)。非可逆のMP3/AAC再エンコードはありません。オーディオはソースのサンプルレートでストリーミングされます。ストリームは、http://{ip}:5901/stream/swyh.flac のようなローカルインターネットラジオURLとしてもアクセスでき、ビット深度とストリームサイズモードのクエリパラメータを備えます。 GUI(fltk-rs)にはAudio、Network、App、Statusタブがあります。オプションには、オーディオソースとサンプルレート、ストリーミング形式、24ビットモード、5つのHTTPチャンキング/Content-Lengthモード、初期バッファリング、16ビット用TPDFディザリング、レンダラー接続を維持するための無音挿入、ネットワークインターフェース選択、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トレイアイコンを含みます。