# musicConvert **Repository Path**: masterkgw/music-convert ## Basic Information - **Project Name**: musicConvert - **Description**: 音乐格式转mp3 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-26 - **Last Updated**: 2025-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 音乐格式转换器 一个基于Spring Boot的音乐格式转换Web应用,支持将多种音频格式转换为MP3格式。 ## 功能特性 - 🎵 支持多种音频格式转换:M4A, WAV, FLAC, AAC, OGG, WMA → MP3 - ⚡ 快速转换:使用FFmpeg引擎,转换速度快,质量高 - 🎨 现代化UI:响应式设计,支持拖拽上传 - 📊 实时进度:显示转换进度和文件信息 - 🔒 安全可靠:自动清理临时文件 - 📱 移动友好:支持移动设备访问 ## 技术栈 - **后端**: Spring Boot 3.2.0, Java 17 - **前端**: Bootstrap 5, JavaScript (ES6+) - **音频处理**: FFmpeg - **构建工具**: Maven ## 系统要求 - Java 17 或更高版本 - Maven 3.6 或更高版本 - FFmpeg (需要预先安装) ## 安装FFmpeg ### macOS ```bash # 使用Homebrew安装 brew install ffmpeg ``` ### Ubuntu/Debian ```bash sudo apt update sudo apt install ffmpeg ``` ### Windows 1. 下载FFmpeg: https://ffmpeg.org/download.html 2. 解压到指定目录 3. 将bin目录添加到系统PATH ## 快速开始 1. **克隆项目** ```bash git clone cd musicConvert ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行应用** ```bash mvn spring-boot:run ``` 4. **访问应用** 打开浏览器访问: http://localhost:8080 ## 项目结构 ``` musicConvert/ ├── src/ │ ├── main/ │ │ ├── java/com/musicconvert/ │ │ │ ├── MusicConverterApplication.java # 主应用类 │ │ │ ├── controller/ │ │ │ │ ├── AudioController.java # REST API控制器 │ │ │ │ └── WebController.java # Web页面控制器 │ │ │ └── service/ │ │ │ └── AudioConversionService.java # 音频转换服务 │ │ └── resources/ │ │ ├── static/ │ │ │ └── js/ │ │ │ └── app.js # 前端JavaScript │ │ ├── templates/ │ │ │ └── index.html # 主页面模板 │ │ └── application.yml # 应用配置 │ └── test/ # 测试代码 ├── uploads/ # 上传文件目录 ├── outputs/ # 输出文件目录 ├── pom.xml # Maven配置 └── README.md # 项目说明 ``` ## API接口 ### 1. 转换音频文件 ``` POST /api/audio/convert Content-Type: multipart/form-data 参数: - file: 音频文件 响应: { "success": true, "message": "文件上传成功,正在转换...", "originalFilename": "example.wav", "fileSize": 1024000, "audioInfo": { "duration": 120.5, "size": 1024000, "bitRate": 192000, "sampleRate": 44100, "channels": 2, "codec": "pcm_s16le" }, "conversionId": 12345 } ``` ### 2. 获取文件信息 ``` POST /api/audio/info Content-Type: multipart/form-data 参数: - file: 音频文件 响应: { "success": true, "audioInfo": { "duration": 120.5, "size": 1024000, "bitRate": 192000, "sampleRate": 44100, "channels": 2, "codec": "pcm_s16le" }, "filename": "example.wav", "fileSize": 1024000 } ``` ### 3. 下载转换后的文件 ``` GET /api/audio/download/{filename} 响应: 文件下载流 ``` ### 4. 清理临时文件 ``` DELETE /api/audio/cleanup 响应: { "success": true, "message": "清理完成" } ``` ## 配置说明 在 `application.yml` 中可以配置以下参数: ```yaml app: upload: dir: uploads # 上传文件目录 output: dir: outputs # 输出文件目录 ffmpeg: path: /usr/local/bin/ffmpeg # FFmpeg可执行文件路径 ffprobe: path: /usr/local/bin/ffprobe # FFprobe可执行文件路径 spring: servlet: multipart: max-file-size: 100MB # 最大文件大小 max-request-size: 100MB # 最大请求大小 ``` ## 支持的音频格式 ### 输入格式 - M4A (MPEG-4 Audio) - WAV (Waveform Audio File Format) - FLAC (Free Lossless Audio Codec) - AAC (Advanced Audio Coding) - OGG (Ogg Vorbis) - WMA (Windows Media Audio) ### 输出格式 - MP3 (MPEG-1 Audio Layer III) ## 转换参数 - **音频编码器**: libmp3lame - **比特率**: 192 kbps - **采样率**: 44.1 kHz - **声道**: 保持原始声道数 ## 开发说明 ### 添加新的音频格式支持 1. 在 `AudioConversionService.isSupportedFormat()` 方法中添加新格式 2. 在 `AudioConversionService.convertToMp3()` 方法中调整FFmpeg参数 ### 自定义转换参数 修改 `AudioConversionService.convertToMp3()` 方法中的FFmpeg构建器: ```java FFmpegBuilder builder = new FFmpegBuilder() .setInput(inputPath) .overrideOutputFiles(true) .addOutput(outputPath) .setFormat("mp3") .setAudioCodec("libmp3lame") .setAudioBitRate(320000) // 320kbps .setAudioSampleRate(48000) // 48kHz .done(); ``` ## 故障排除 ### 1. FFmpeg路径错误 确保FFmpeg已正确安装,并在配置文件中设置正确的路径。 ### 2. 文件权限问题 确保应用有权限读写uploads和outputs目录。 ### 3. 内存不足 对于大文件,可能需要增加JVM堆内存: ```bash mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xmx2g" ``` ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 更新日志 ### v1.0.0 - 初始版本发布 - 支持多种音频格式转换 - 现代化Web界面 - RESTful API接口