ローカル音楽、アルバムフォルダ、動画付き音声ファイル、URL 再生を 1 つのウィンドウで扱えるデスクトッププレイヤーです。Rust + Slint + libVLC 製で、軽量・高速に動作します。
v0.6 で C# (Avalonia + .NET) から Rust へ全面的に書き直しました。UI・機能・データ(再生履歴など)は旧バージョンと互換です。
mp3wavm4aaacflacoggなどのローカル再生mp4movwmvmkvwebmなどの音声トラック再生- フォルダをアルバムとしてまとめて読み込み
- URL / ファイルパス / フォルダパスを同じ入力欄から追加
- ドラッグアンドドロップでファイルやフォルダを追加(Windows)
- 最近再生したアルバム / 曲の履歴
yt-dlpによる URL 音声取得とキャッシュffmpegによる変換とキャッシュ- Discord Rich Presence
- Windows(メインターゲット。ドラッグ&ドロップ・初回セットアップ・アンインストール対応)
- Linux(バイナリ配布あり。システムの libvlc が必要)
- macOS(ソースビルドのみ。libvlc を pkg-config で解決できる環境が必要 — 公式バイナリ配布は現在準備中)
- GitHub Releases から
SimpleMusicPlayer-vX.Y.Z-win-x64.zipをダウンロードします。 - 好きな場所へ展開します。
SimpleMusicPlayer.exeを起動します。
初回起動時にアプリ内からセットアップ確認が出ます。実行すると次を自動で行います(すべてアプリ本体に内蔵。外部スクリプトはありません)。
- Start Menu ショートカット作成
PATHへのアプリフォルダ追加- Explorer の右クリックメニュー追加
Open with/Default apps向けの関連付け候補登録yt-dlpdenoffmpegの不足時ダウンロード
アンインストールは Windows の「設定 > アプリ」から行うか、次を実行します:
.\SimpleMusicPlayer.exe --uninstall追加スイッチ(旧バージョンと同名):
--remove-user-data: 再生履歴などのローカルデータも削除--remove-cache: URL 再生キャッシュを削除--remove-bundled-tools: 同梱ダウンロード済みツールを削除--remove-app-directory: 展開フォルダ自体も削除
必要な外部ツールは次のどちらかで解決してください。
PATHにyt-dlpffmpegと JS runtime (denonodebunqjs) を入れる- 展開フォルダ配下の
tools/に置く(例:tools/yt-dlp/yt-dlp)
Linux では libvlc 本体はシステム側で入れておく前提です。例:
- Debian / Ubuntu:
sudo apt install vlc libvlc-dev - Arch:
sudo pacman -S vlc - Fedora:
sudo dnf install vlc
- ファイルを再生したい:
Openを押すか、ファイルをウィンドウへドラッグします。 - アルバムごと再生したい:
Add Albumを押すか、フォルダをドラッグします。 - URL を再生したい: 入力欄へ URL を貼って
Addを押します。 - パスを直接入れたい: 入力欄へファイルパスやフォルダパスを貼って
Addを押します。
Space: 再生 / 一時停止Left/Right: 5 秒シークCtrl+Left/Ctrl+Right: 前の曲 / 次の曲
Recent AlbumsとRecent Tracksに最大 20 件ずつ保存します。- 保存先は各 OS の Local Application Data 配下です(旧 C# バージョンの
history.jsonをそのまま引き継ぎます)。 - ダブルクリックでそのまま再生し直せます。
- URL 再生には
yt-dlpが必要です。 - YouTube 系 URL を安定して再生するには JavaScript runtime (
denonodebunqjs) も必要です。 webmmkvopusなどの変換にはffmpegが必要です。- 取得済み音声は
cache/yt-dlp/、変換済み音声はcache/transcoded/に保存されます。
Discord のアクティビティには、再生中の曲名が自動で表示されます。
- Rust (stable)
- Windows: Visual Studio Build Tools(vlc-rs が libvlc.dll からインポートライブラリを生成するのに
dumpbin/libを使用)+ 下記の libvlc ランタイム - Linux:
libvlc-devとpkg-config
libvlc のネイティブランタイムを取得します(vendor/libvlc/win-x64 に配置され、.cargo/config.toml の VLC_LIB_DIR が参照します):
.\scripts\fetch-libvlc.ps1cargo run -p smp-app実行には libvlc.dll / libvlccore.dll / plugins/ が exe の隣に必要です。デバッグ時は次のいずれかで配置します:
Copy-Item vendor\libvlc\win-x64\libvlc.dll,vendor\libvlc\win-x64\libvlccore.dll target\debug\
Copy-Item vendor\libvlc\win-x64\plugins target\debug\ -RecurseCLI オプション(旧バージョン互換):
cargo run -p smp-app -- --album "D:\Music\Some Album" --loop all
cargo run -p smp-app -- "D:\Music\track1.mp3" "https://www.youtube.com/watch?v=dQw4w9WgXcQ"--album <folder>: フォルダ内の対応ファイルを名前順で読み込み--shuffle: 読み込み時にシャッフル--index <n>: 開始トラック番号。0始まり--loop none|all|one: 初期ループモード- 位置引数: ローカルファイル / フォルダ /
http(s)URL
cargo test --workspace.\scripts\package-release.ps1publish\SimpleMusicPlayer-win-x64\ に exe + libvlc ランタイム一式が出力されます。
crates/
smp-core/ ドメインモデル・キュー・履歴永続化(純粋ロジック)
smp-playback/ libvlc ラッパー、yt-dlp / ffmpeg キャッシュ、外部プロセス実行
smp-discord/ Discord Rich Presence
smp-setup/ Windows: ショートカット・PATH・レジストリ・ツールDL・アンインストール
smp-app/ Slint UI + 状態管理(バイナリ本体)
- GitHub Actions は
v0.6.0のようなタグ push でwin-x64linux-x64をビルドし、それぞれ zip を Release に添付します。 workflow_dispatchでも同じ artifact を取得できます。
git tag v0.6.0
git push origin main v0.6.0