- 本地音频播放 — 支持 MP3 等常见格式
- 三种播放模式 — 顺序播放 / 随机播放 / 单曲循环
- 播放队列管理 — 随时查看和调整播放列表
- 迷你卡片模式 — 始终置顶的小窗口,边听边做其他事
- 自定义试听起点 — 编辑音频时可调整预览起始位置
- BV 号提取 — 粘贴 B站视频链接或 BV 号,一键提取高清音频
- 自动转码 — 自动将 m4s 流合并转为 MP3
- 封面下载 — 自动下载视频封面作为歌曲封面
- 进度可视 — 实时显示下载和转码进度
- 波形可视化 — 点击"编辑"进入音频编辑器,直观看到音频波形*
- 分割片段 — 在任意位置添加分割点,将长音频切成多段
- 片段命名 — 每个分割片段可自定义名称
- 分段试听 — 每个片段支持独立播放试听
- 一键导出 — 导出全部片段到音频库,自动删除原始音频
- 创建歌单 — 自由创建和管理自定义歌单
- 拖拽排序 — 歌单内歌曲支持自由排序*
- 搜索筛选 — 快速搜索音频库中的歌曲
- 自定义封面 — 支持为歌曲更换本地图片封面
- 无边框窗口 — 自定义标题栏,沉浸式体验
- 侧边导航 — 首页 / 音频库 / 歌单 / 设置,一目了然
- 关闭确认 — 优雅的关闭弹窗,支持"下次不提醒"
截图待补充。运行
npm run dev即可体验。
- Node.js >= 18
- npm >= 9
- Windows 10/11(当前仅支持 Windows)
# 克隆项目
git clone https://github.com/your-username/musicwave.git
cd musicwave
# 安装依赖
npm install
# 开发模式运行
npm run dev
# 构建生产版本
npm run build
# 打包为便携版 (dist-portable/win-unpacked/)
npm run dist| 层级 | 技术 |
|---|---|
| 桌面框架 | Electron 33 |
| 前端框架 | React 18 + TypeScript |
| 构建工具 | electron-vite 2 |
| UI 组件 | Ant Design 5 |
| 状态管理 | Zustand 5 |
| 路由 | React Router 6 |
| 音频处理 | fluent-ffmpeg + ffmpeg |
| B站 API | WBI 签名 + Electron net 模块 |
MusicWave/
├── src/
│ ├── main/ # Electron 主进程
│ │ ├── index.ts # 窗口创建、IPC 注册
│ │ ├── types.ts # 类型定义
│ │ ├── ipc/ # IPC 处理器
│ │ │ ├── bilibili.ts # B站音频提取
│ │ │ └── mini-player.ts # 迷你播放器窗口
│ │ ├── services/ # 核心服务
│ │ │ ├── bilibili.ts # B站 API 封装
│ │ │ ├── downloader.ts # 文件下载
│ │ │ ├── ffmpeg.ts # 音频转码/裁剪/导出
│ │ │ └── wbi.ts # WBI 签名
│ │ └── store/ # 主进程持久化存储
│ ├── preload/ # 预加载脚本
│ └── renderer/ # React 渲染进程
│ ├── components/ # 通用组件
│ │ ├── Layout/ # 主布局(无边栏+导航)
│ │ ├── PlayerBar/ # 底部播放控制栏
│ │ ├── AudioEditor/ # 音频编辑器
│ │ └── MiniPlayer/ # 迷你播放器
│ ├── pages/ # 页面
│ │ ├── Home/ # 首页(B站提取)
│ │ ├── Library/ # 音频库
│ │ ├── Playlists/ # 歌单列表
│ │ ├── PlaylistDetail/ # 歌单详情
│ │ └── Settings/ # 设置
│ ├── stores/ # Zustand 状态
│ ├── hooks/ # 自定义 Hooks
│ └── types/ # 类型定义
├── resources/ # 打包资源
├── electron-builder.yml # 打包配置
└── package.json
-
仅供学习研究 — 本项目仅用于学习 Electron + React 桌面开发技术,禁止用于任何商业用途。
-
版权尊重 — 使用本工具从 Bilibili 等平台下载的音频内容,其版权归属原作者或平台所有。请尊重创作者的知识产权,不要将下载内容用于商业目的或二次传播。
-
用户责任 — 使用者应对自己的行为负责。开发者不承担因使用本工具而产生的任何法律后果。请在下载后 24 小时内删除,或仅用于对已购买/已获得授权的作品进行格式转换。
-
Bilibili 服务条款 — 使用本工具前,请确保你已知悉并遵守 Bilibili 的用户协议和相关政策。
本项目代码采用 MIT License 授权。详见 LICENSE。
本项目以子进程方式调用 ffmpeg(GPL-3.0-or-later)。ffmpeg 作为独立程序运行,不属于本项目的一部分,其源代码和许可信息请参见 THIRDPARTY.md 及 https://ffmpeg.org/。
欢迎提交 Issue 和 Pull Request!
- ffmpeg — 强大的音视频处理工具
- fluent-ffmpeg — Node.js ffmpeg API 封装
- Ant Design — 优秀的 React UI 组件库
- electron-vite — 高效的 Electron 构建工具