dorkhub

myune_music

一个使用 Flutter(Dart) 的简单音乐播放器实现 / A simple music player implemented using Flutter (Dart).

xiaobaimc
Dart46237 forksApache-2.0updated 1 week ago
git clone https://github.com/xiaobaimc/myune_music.gitxiaobaimc/myune_music

🎵 Myune Music

Flutter Platforms Rust License

一个基于 Flutter (Dart) 实现的简洁本地音乐播放器,支持 Windows / Linux 双端。

🍎 macOS 用户可使用社区移植版:myune_music_macos

✨ 特性

  • 💻 支持 Windows / Linux 双平台
  • 🎶 歌曲管理:支持 文件夹歌单手动歌单
  • 🧠 自动按 歌手专辑 分类
  • 🎨 使用 Material 3 组件与配色
  • 🎧 自动读取音频元数据,支持多种格式
  • 📝 歌词支持:内嵌歌词、本地 .lrc、网络歌词源,支持本地逐字歌词
  • 🔊 提供 音调控制倍速播放
  • ✨ 可自定义主题配色与字体
  • 🖥️ 集成 SMTC(系统媒体传输控制)MPRIS(Linux)
  • 🧩 支持 音频独占模式(仅 Windows)
  • 🔌 支持 手动选择音频输出设备
  • ⚙️ 全局快捷键支持
  • 🎵 读取使用和写入 ReplayGain 标签

🔧关于 Linux

对于0.9.1及以下的版本,需要安装 libmpv

例如 Ubuntu/Debian

sudo apt install libmpv-dev mpv 

对于0.9.2及以上版本,需要安装 keybinder-3.0 以使用全局快捷键

例如 Ubuntu/Debian

sudo apt install keybinder-3.0

🎶 桌面歌词

由于 Flutter 暂不支持多窗口功能,因此暂未提供桌面歌词。 可使用以下第三方工具替代:

以上软件非本人开发,请支持原作者 🙏

🌐 歌词

目前仅支持UTF-8编码的 .lrc 文件

默认情况下,将会优先读取内嵌歌词,如果没有则读取本地 .lrc 文件

如果上述都无歌词的话,可以在设置中启用 从网络获取歌词

启用后,将在未读取到内联歌词和本地 .lrc 文件自动获取歌词

软件内默认提供了三个歌词源可供选择

实现参考 通过歌曲名获取原文+翻译歌词

🎵 歌词解析

假设有如下格式的歌词

[02:55.031]照らされた世界 咲き誇る大切な人

[02:55.031]在这阳光普照的世界 骄傲绽放的重要之人

[02:55.031]te ra sa re ta se ka i sa ki ho ko ru ta i se tsu na hi to

可以看到这三句歌词对应的时间戳是相同的,那么软件内就会把它识别为同一句歌词的不同行

上述格式从上到下对应原文/翻译/罗马音

软件内提供设置同时间戳歌词行数,例如调整数值为2,最后一行(罗马音)就不会被显示

📃 逐字歌词

软件支持两种格式的逐字歌词:

[00:15.237]悴[00:15.742]ん[00:15.908]だ[00:16.200]心

或者:

[00:15.237]<00:15.237>悴<00:15.742>ん<00:15.908>だ

无需手动设置,软件会自动识别

📦 内嵌元数据支持

文件格式 元数据格式
AAC (ADTS) ID3v2, ID3v1
Ape APE, ID3v2, ID3v1
AIFF ID3v2, Text Chunks
FLAC Vorbis Comments, ID3v2
MP3 ID3v2, ID3v1, APE
MP4 iTunes-style ilst
MPC APE, ID3v2, ID3v1
Opus Vorbis Comments
Ogg Vorbis Vorbis Comments
Speex Vorbis Comments
WAV ID3v2, RIFF INFO
WavPack APE, ID3v1

🎵 支持的音频格式

参阅 media-kit

部分格式需在设置启用 允许添加任何格式的文件

📸 软件截图

🚀 快速开始

环境要求

  • 安装 Rust 环境
  • 安装 Flutter SDKDart 版本需 ≥ 3.10.0,Flutter 版本需 ≥ 3.41.0

安装依赖

flutter pub get

启动项目

flutter run

构建项目

flutter build windows --release # 或对应平台名

🧱 使用的依赖与致谢

插件 功能
lofty-rs 读取音频元信息
mpv_audio_kit 音频播放支持
anni_mpris_service D-Bus MPRIS 控件

更多依赖请查看 pubspec.yaml

特别感谢:

提供了 Rust + Flutter 的 SMTC 实现参考 🙏

❤️ 贡献与赞助

如果你喜欢这个项目,觉得它对你有帮助,可以通过以下方式支持我,让我有动力继续维护和更新

🧩 贡献

可以是bug反馈,新功能请求,或者是某个地方的优化

可以是bug修复,添加新功能,或者是某个地方的优化

对于新功能的PR,请先创建一个 Issue 探讨该功能是否需要

☕ 赞助

📄 许可证

本项目使用 Apache License 2.0 开源许可协议。 详细内容请查看根目录下的 LICENSE 文件。

🔤 字体版权说明(Font License)

本项目使用小米公司提供的 MiSans 字体,该字体已明确允许免费商用

Star History Chart

Star History Chart

more like this

anne-key

Firmware for Anne Pro Keyboard written in Rust

Rust572

TachiSnap

TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…

HTML50

bit_gossip

Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.

Rust50

search

search projects, people, and tags