音乐播放器 - 波形图可视化
Go to file
2026-01-30 14:18:15 +08:00
LICENSE Initial commit 2026-01-30 14:16:21 +08:00
README.md 更新 README.md 2026-01-30 14:18:15 +08:00

音乐播放器 - 波形图可视化

一个现代化的音乐播放器,具有实时波形图可视化功能。支持文件夹播放、多种循环模式和丰富的键盘快捷键。使用 Web Audio API 和 Canvas 技术实现音频分析和可视化效果。

🎵 功能特性

核心播放功能

  • 本地音乐文件播放 - 支持 MP3、WAV、OGG、M4A、FLAC、AAC 等格式
  • 📁 文件夹播放 - 支持选择整个文件夹,自动循环播放
  • 🔄 多种播放模式
    • 🔁 列表循环(默认)- 播放完最后一首回到第一首
    • 🔂 单曲循环 - 重复播放当前曲目
    • 🔀 随机播放 - 随机选择下一首
  • ⏭️ 播放控制 - 上一首、下一首、播放/暂停、停止

可视化效果

  • 📊 三种可视化模式
    • 条形图频谱 - 经典频谱分析仪效果
    • 波形图 - 实时音频波形显示
    • 圆形频谱 - 现代化圆形频谱效果,圆心居中显示
  • 🎯 圆心居中 - 圆形图圆心准确位于画布中央
  • 📏 自适应大小 - 可视化效果根据画布尺寸自动调整

用户界面

  • 📈 实时进度条 - 可拖动跳转,显示当前时间和总时长
  • 🔊 智能音量控制
    • 0-30%🔈 低音量图标
    • 30-70%🔉 中音量图标
    • 70-100%🔊 高音量图标
    • 静音:🔇 静音图标
  • 🎨 现代化界面 - 渐变背景、毛玻璃效果、流畅动画
  • 📱 响应式设计 - 完美适配桌面端和移动端

交互体验

  • 🖱️ 直观操作 - 所有控制按钮都有悬停提示
  • 🔄 无缝切换 - 切换歌曲时自动播放
  • 💡 视觉反馈 - 模式切换、操作反馈等动画效果
  • ⌨️ 丰富快捷键 - 支持键盘操作,提升效率

🛠️ 技术栈

  • Vite - 快速的前端构建工具
  • Web Audio API - 音频处理、分析和频谱数据获取
  • Canvas API - 实时波形图绘制和可视化效果
  • File API - 本地文件和文件夹读取
  • 原生 JavaScript - 无需额外依赖,轻量级实现
  • CSS3 - 现代化渐变、毛玻璃效果和响应式动画
  • HTML5 - 语义化标签和现代Web标准

🚀 使用方法

1. 选择音乐

  • 单个文件:点击"选择音乐文件"按钮,选择本地音频文件
  • 整个文件夹:点击"选择音乐文件夹"按钮,选择包含音频文件的文件夹

2. 播放控制

  • ▶️/⏸️ 播放/暂停:开始或暂停播放
  • ⏹️ 停止:停止播放并重置到开始位置
  • ⏮️ 上一首:切换到播放列表中的上一首(文件夹模式)
  • ⏭️ 下一首:切换到播放列表中的下一首(文件夹模式)

3. 播放模式(文件夹模式)

  • 🔁 列表循环(默认):播放完最后一首后回到第一首
  • 🔂 单曲循环:重复播放当前曲目
  • 🔀 随机播放:随机选择下一首 点击播放模式按钮可循环切换

4. 可视化效果

  • 🎨 切换可视化:在三种波形图效果之间切换
  • 条形图频谱:经典频谱分析仪效果
  • 波形图:实时音频波形显示
  • 圆形频谱:现代化圆形频谱效果,圆心居中显示

5. 进度和音量控制

  • 进度条:可拖动跳转,显示当前时间和总时长
  • 音量滑块精确调节音量0-100%
  • 音量图标:根据音量大小动态变化(🔇🔈🔉🔊
  • 一键静音:点击音量图标快速静音/取消静音

6. 键盘快捷键

  • 空格键:播放/暂停
  • M键:静音/取消静音
  • P键:上一首(文件夹模式)
  • N键:下一首(文件夹模式)
  • ↑↓键:增加/减少音量
  • ←→键:快退/快进5秒
  • Ctrl+←/→:上一首/下一首(文件夹模式)

功能亮点

🎵 智能播放

  • 文件夹播放:支持选择整个音乐文件夹,自动创建播放列表
  • 无缝切换:切换歌曲时自动播放,无需手动操作
  • 多种循环:列表循环、单曲循环、随机播放三种模式
  • 格式支持:支持 MP3、WAV、OGG、M4A、FLAC、AAC、WMA、OPUS、WebM 等主流格式

📊 专业可视化

  • 实时频谱:基于 Web Audio API 的实时音频分析
  • 三种模式:条形图、波形图、圆形频谱,各具特色
  • 性能优化:智能帧率控制,流畅不卡顿
  • 自适应布局:圆形图圆心始终居中,大小自适应

🎮 人性化交互

  • 直观操作:所有控制按钮都有悬停提示
  • 键盘支持:丰富的快捷键,提升操作效率
  • 视觉反馈:模式切换、操作成功都有动画反馈
  • 响应式设计:完美适配手机、平板、桌面各种设备

🔧 技术特色

  • 现代架构:基于 Vite 构建,开发体验优秀
  • 零依赖:纯原生 JavaScript无需外部库
  • 模块化:代码结构清晰,易于维护和扩展
  • 错误处理:完善的错误处理和用户提示

🔄 版本更新

v2.0.0 (最新版本)

  • 新增文件夹播放功能 - 支持选择整个音乐文件夹
  • 🔄 新增多种播放模式 - 列表循环、单曲循环、随机播放
  • ⏭️ 新增上一首/下一首控制 - 完整的播放列表导航
  • 🎹 扩展键盘快捷键 - 支持 P/N 键和 Ctrl+方向键
  • 🎯 优化圆形图显示 - 圆心居中,大小适中
  • 🔧 改进音频上下文管理 - 更稳定的切换和播放体验
  • 📱 增强移动端适配 - 更好的响应式设计

v1.0.0

  • 🎵 基础音乐播放功能
  • 📊 三种波形图可视化模式
  • 🎮 完整的播放控制
  • 🔊 智能音量控制
  • 📱 基础响应式设计

🌐 浏览器兼容性

  • Chrome/Edge: 完全支持(推荐)
  • Firefox: 完全支持
  • Safari: 完全支持(可能需要用户交互启动音频)
  • 移动端浏览器: 支持触摸操作和响应式布局

注意:由于浏览器安全策略,音频播放可能需要用户交互(如点击)才能自动开始。

📁 项目结构

audio-player/
├── src/
│   ├── main.js              # 主播放器逻辑和UI控制
│   ├── waveformVisualizer.js # 音频可视化核心算法
│   ├── style.css            # 现代化样式和动画
│   ├── counter.js           # 计数器示例(可忽略)
│   └── javascript.svg       # JS图标
├── public/
│   └── vite.svg            # Vite图标
├── index.html              # 主HTML文件
├── package.json            # 项目配置
├── vite.config.js          # Vite构建配置
└── README.md               # 项目文档

🚀 快速开始

安装依赖

npm install

启动开发服务器

npm run dev

构建项目

npm run build

预览构建结果

npm run preview

🤝 贡献

欢迎提交 Issue 和 Pull Request如果您有任何改进建议或发现了bug请随时告诉我们。

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

🙏 致谢

  • 感谢 Vite 提供优秀的构建工具
  • 感谢 Web Audio API 和 Canvas API 让音频可视化成为可能

享受音乐,享受代码! 🎶