Skip to content

feat: 支持 M4A/ALAC 交付并修复 96kHz M4A/MP3 下载问题#11

Merged
Soltus merged 3 commits into
v3from
trae/solo-agent-sXlGQQ
Jun 6, 2026
Merged

feat: 支持 M4A/ALAC 交付并修复 96kHz M4A/MP3 下载问题#11
Soltus merged 3 commits into
v3from
trae/solo-agent-sXlGQQ

Conversation

@Soltus

@Soltus Soltus commented Jun 6, 2026

Copy link
Copy Markdown
Member

🎯 Changes

1. M4A/ALAC 无损格式交付支持

  • 新增 M4A/ALAC 作为第三种交付选项,与 WAV、MP3 并列。
  • DownloadModal.tsx 中新增 M4A 下载按钮(橙色),支持合并轨、人声轨、伴奏轨、单轨下载。
  • 新增后端 /download-m4a/{task_id} 端点,支持单轨/双轨合并与 Range 请求。
  • 新建 backend/services/m4a_encoder.py 模块,实现基于 ffmpeg subprocess 的 M4A/ALAC 编码器。
  • 更新 public/flow-data.json,新增 /download-m4a/{task_id} 节点及数据流关系。

2. 修复 96kHz 渲染后 M4A/MP3 下载为 48kHz 的问题

  • 新增后端 /download-mp3-file/{filename} 端点,直接按渲染产物文件名转码 MP3,保留 96kHz 采样率。
  • 新增后端 /download-m4a-file/{filename} 端点,直接按渲染产物文件名转码 M4A/ALAC,保留 96kHz 采样率。
  • 重构 DownloadModal.tsx 中的 handleDownloadMp3 和新增 handleDownloadM4a,支持通过 taskIdurl 两种路径调用,优先使用 url 中的 filename 路径以保留 96kHz 采样率。
  • 新增文档 fix-m4a-96khz-bug.md,详细说明问题根因及修复方案。

3. 其他改进

  • DownloadModal.tsx 新增 m4aLoading / m4aError 状态及模态打开时的重置逻辑。
  • 错误提示区合并显示 MP3/M4A 失败信息,按钮文案精简。
  • 移除 public/flow-data.json 中的 __pycache__ 模块节点及其调用关系。

💡 Technical Highlights

  • 多路径下载策略: 前端下载逻辑支持 taskIdurl 两种路径,优先使用 url 中的 filename 直接转码,以确保 96kHz 采样率的保留,同时兼容旧的 taskId 逻辑。
  • FFmpeg 集成: 通过 ffmpeg subprocess 实现 M4A/ALAC 编码,支持可用性检测、版本查询、转码、日志与异常处理,确保编码过程的稳定性和可靠性。
  • 模块化设计: 将 M4A 编码器独立为服务模块,便于维护和扩展。
  • 文档先行: 针对新功能和重要 Bug 修复,提前编写详细文档,确保团队对变更的理解和后续维护。

Soltus and others added 3 commits May 20, 2026 20:58
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
@Soltus Soltus merged commit e4ec8eb into v3 Jun 6, 2026
1 check passed
@Soltus Soltus deleted the trae/solo-agent-sXlGQQ branch June 6, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant