Skip to content

[Bug] add_audio 放置内置/项目音频时未建立媒体池 sourceAssetId,导致 analyze_music 失败 #111

Description

@ShallM

版本

main 源码,commit 320c07f

平台 / 功能

macOS Apple Silicon;AI Agent 对话剪辑 / 素材池 / 音乐分析。

问题描述

Agent 通过 add_audio 把内置音乐或项目音频加入时间线时,只创建了带 src 的 timeline item,没有确保媒体池存在 canonical audio asset,也没有写入 sourceAssetId。之后按 itemId 调用 analyze_music 无法解析唯一素材。与 #55 的本地路径/卡点问题相关,但这里是 add_audio 自身生成了未关联片段。

复现步骤

  1. 调用 list_audio,选择内置音乐(例如 aud_pulse)。
  2. 调用 add_audio 放入音频轨。
  3. 对返回的 timeline item 调用 analyze_music
  4. 收到:clip ... is not linked to a unique media-pool asset; relink it before music analysis

期望行为

所有由 add_audio 创建的片段都应关联唯一媒体池资产,后续分析、重连、持久化和使用状态检查使用同一 identity。

实际行为

片段只有 srcsourceAssetId 为空;内置音频甚至可能完全没有注册进 doc.assets

根因定位

buildCommands().addAudio 直接构造 timeline item,而没有执行 media-pool 注册/去重及 source identity 投影。

建议修复

  • 先按 exact id+src 或唯一同源 asset 复用媒体池记录。
  • 内置音频不存在时原子 addAsset
  • timeline item 写入 sourceAssetIdsourceRevision、content hash/filename 等来源字段。
  • addAsset 与 add item 使用同一 batch,避免半完成状态。
  • 添加项目音频和内置音频两条回归测试。

本地验证

修复后实际调用 analyze_music 成功,返回 120 BPM、38 beats、25 downbeats、2 sections;媒体池显示该音频正在时间线中使用。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions