fix(ai-avatar): 端到端一致性修复(标题/封面/B-roll位置/B-roll时长) #1869
Reference in New Issue
Block a user
Delete Branch "fix/ai-avatar-title-cover-broll-alignment"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
修复 5 个一致性问题
1. 最终视频没有标题
2 & 5. 封面和视频不一致 / 封面标题和预览不一致
3. B-roll 位置和文案位置不一致
4. B-roll 时长不应该估算
额外修复
修复5个问题: 1. 最终视频标题一致性 - 后端 drawtext 默认 font_size 从 36 改为 28(对齐前端 DEFAULT_TITLE_CONFIG.size) - 后端 drawtext 默认 position 从 'top' 改为 'bottom'(对齐前端默认值) - 前端 contract.ts font_size fallback 从 36 改为 28 2. 封面与视频一致性 - 渲染完成后自动用 output_cover_url 更新前端封面配置 - 前端封面标题预览 fontSize 改用 size*0.55 缩放(与对口型预览对齐) - 封面默认阴影改为 none(与后端 drawtext 无 shadow 行为对齐) 3. B-roll 位置一致性 - ModalBRollEditor 使用 lipsyncJob.script_text(TTS 时锁定的文案) 而非 state.scriptText(用户可能已修改的文案) 4. B-roll 时长精确化 - 后端 lipsync_tts.py 新增 _compute_sentence_timings(): TTS 音频用 ffmpeg silencedetect 检测静音点,与句子边界对齐 - 新增 sentence_timings JSON 字段到 LipsyncJobModel + Alembic migration - 前端 sentences.ts 不再做字数比例估算,改为接收后端精确时间戳 - ModalBRollEditor 接收 sentenceTimings prop 5. 标题拖拽位置修复 - PanelLipsyncPreview 拖拽标题发送百分比坐标(0-100) + position:'custom' - 后端 build_title_drawtext_filter 的 custom 位置改用 drawtext 表达式 x=(w-text_w)*{pct_x} y=(h-text_h)*{pct_y}(百分比,与视频尺寸解耦) 文件变更: - apps/api/app/tasks/lipsync_tts.py: 句子时间戳计算 - apps/api/app/schemas/lipsync.py: sentence_timings 字段 - packages/adapters/sqlalchemy_impl/models.py: sentence_timings 列 - packages/domain/video_filter_builder.py: 百分比坐标 + 默认值对齐 - alembic/versions/075_add_sentence_timings.py: 数据库迁移 - apps/web/src/pages/ai-avatar/types.ts: SentenceTiming + RenderJob.output_cover_url - apps/web/src/pages/ai-avatar/utils/sentences.ts: 移除字数估算 - apps/web/src/pages/ai-avatar/utils/contract.ts: font_size 默认值 - apps/web/src/pages/ai-avatar/components/PanelLipsyncPreview.tsx: 拖拽百分比 - apps/web/src/pages/ai-avatar/components/PanelCoverAndGenerate.tsx: 标题缩放 - apps/web/src/pages/ai-avatar/components/ModalBRollEditor.tsx: 后端时间戳 - apps/web/src/pages/ai-avatar/AiAvatarPage.tsx: 封面更新 + 传参 - tests/unit/test_video_filter_builder.py: 测试更新🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1869 已关闭或合并,对应的预览环境已被清理。