edit页面播放没有声音
广告
{{v.name}}
📋 原始需求(task.md):
edit.html页面点击播放后没有声音。
解决方案:每次点击播放按钮时,后端先生成MIDI文件,前端下载MIDI文件,然后播放MIDI文件。
直接播放MIDI文件肯定有声音。
增加Live Server的配置,在生成MIDI文件后,Live Server会自动刷新页面,导致播放停止。
edit.html页面点击播放后没有声音。
解决方案:每次点击播放按钮时,后端先生成MIDI文件,前端下载MIDI文件,然后播放MIDI文件。
直接播放MIDI文件肯定有声音。
增加Live Server的配置,在生成MIDI文件后,Live Server会自动刷新页面,导致播放停止。
通过后端生成MIDI文件并返回给前端,让浏览器原生播放MIDI音频数据。同时配置Live Server忽略MIDI文件,防止自动刷新。
问题分析
- 问题现象:点击播放按钮后没有声音,浏览器控制台无错误
- 根本原因:浏览器不支持MIDI文件播放,只能播放常见的音频格式(如MP3、WAV)
- 正确逻辑:前端需要获取可播放的音频数据,浏览器可以通过Audio对象播放Blob URL
解决方案
- 后端添加POST /preview接口,接收前端参数,生成MIDI后返回二进制数据
- 前端通过axios获取MIDI二进制数据,创建Blob URL并用Audio对象播放
- 在.liveServer.config.json中配置ignore来忽略.mid文件的自动刷新
- 在.vscode/settings.json中配置Live Server设置