# 音乐播放器 - 波形图可视化 一个现代化的音乐播放器,具有实时波形图可视化功能。支持文件夹播放、多种循环模式和丰富的键盘快捷键。使用 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 # 项目文档 ``` ## 🚀 快速开始 ### 安装依赖 ```bash npm install ``` ### 启动开发服务器 ```bash npm run dev ``` ### 构建项目 ```bash npm run build ``` ### 预览构建结果 ```bash npm run preview ``` ## 🤝 贡献 欢迎提交 Issue 和 Pull Request!如果您有任何改进建议或发现了bug,请随时告诉我们。 ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - 感谢 [Vite](https://vitejs.dev/) 提供优秀的构建工具 - 感谢 Web Audio API 和 Canvas API 让音频可视化成为可能 --- **享受音乐,享受代码!** 🎶✨