Ai_GirlFriend/xuniYou/唱歌视频生成失败诊断.md
2026-03-02 18:57:11 +08:00

4.1 KiB
Raw Permalink Blame History

唱歌视频生成失败诊断

唱歌视频生成失败诊断

问题现象

  • 从截图看到任务相关的请求
  • 日志显示有视频生成失败的情况
  • API查询任务382返回"任务不存在"

诊断结果

任务状态

通过API查询 http://192.168.1.141:30101/sing/generate/382 返回:

{"code":404,"msg":"任务不存在","data":null}

这说明:

  1. 任务382可能已被删除或从未创建
  2. 或者任务ID不是382

从日志分析

截图中的日志显示:

  • 多个请求返回200状态码
  • 有"视频生成成功"的日志
  • 也有"视频生成失败"的日志
  • 提到"任务2次失败"

可能的原因

1. EMO模型调用失败

唱歌功能使用阿里云DashScope的EMO模型生成视频可能的问题

  • API密钥配置错误或过期
  • 网络连接问题
  • 内容安全审核未通过
  • 并发限制超出

2. 音频处理失败

  • 音频文件下载失败
  • 音频分段处理出错
  • FFmpeg命令执行失败

3. 视频合成失败

  • 分段视频生成失败
  • 视频拼接过程出错
  • OSS上传失败

4. 资源限制

  • 用户视频生成次数不足
  • 并发任务数超出限制
  • 内存或磁盘空间不足

排查步骤

步骤1: 检查数据库中的错误信息

SELECT id, status, error_msg, payload, created_at, updated_at 
FROM generation_task 
WHERE id = 382;

步骤2: 检查应用日志

查看lover应用的日志文件搜索任务382相关的错误信息

任务 382
generation_task_id.*382

步骤3: 检查EMO配置

检查 lover/.envlover/config.py 中的配置:

  • DASHSCOPE_API_KEY
  • EMO_MAX_CONCURRENCY
  • SING_MERGE_MAX_CONCURRENCY

步骤4: 检查分段视频状态

SELECT id, segment_id, status, error_msg, dashscope_task_id
FROM song_segment_video
WHERE song_id IN (
    SELECT JSON_EXTRACT(payload, '$.song_id')
    FROM generation_task
    WHERE id = 382
);

步骤5: 测试EMO API连接

创建测试脚本验证EMO API是否正常工作。

常见解决方案

方案1: 内容安全审核问题

如果错误信息包含"内容安全"相关字样:

  • 检查歌词内容是否合规
  • 检查恋人形象是否通过审核
  • 尝试更换其他歌曲

方案2: API配置问题

# 检查配置文件
DASHSCOPE_API_KEY = "your-api-key"
EMO_MAX_CONCURRENCY = 1
SING_MERGE_MAX_CONCURRENCY = 1

方案3: 重试任务

使用重试接口:

POST /sing/retry/{task_id}

方案4: 清理临时文件

检查并清理临时目录,确保有足够的磁盘空间。

配置检查结果

已确认的配置

  • DASHSCOPE_API_KEY: 已配置
  • EMO_MAX_CONCURRENCY: 1
  • SING_MERGE_MAX_CONCURRENCY: 2
  • OSS配置: 已配置阿里云OSS

需要检查的项目

  1. 数据库中任务382的详细错误信息
  2. 应用运行日志
  3. 分段视频生成状态
  4. 用户剩余视频生成次数

快速诊断SQL

-- 查看任务详情
SELECT 
    id, 
    user_id,
    lover_id,
    status, 
    error_msg, 
    JSON_PRETTY(payload) as payload_detail,
    created_at, 
    updated_at 
FROM generation_task 
WHERE id = 382;

-- 查看关联的分段视频
SELECT 
    sv.id,
    sv.segment_id,
    sv.status,
    sv.error_msg,
    sv.dashscope_task_id,
    sv.video_url,
    ss.segment_index,
    ss.duration_ms
FROM song_segment_video sv
LEFT JOIN song_segment ss ON sv.segment_id = ss.id
WHERE sv.song_id = (
    SELECT JSON_EXTRACT(payload, '$.song_id')
    FROM generation_task
    WHERE id = 382
)
AND sv.image_hash = (
    SELECT JSON_EXTRACT(payload, '$.image_hash')
    FROM generation_task
    WHERE id = 382
)
ORDER BY ss.segment_index;

-- 查看用户剩余次数
SELECT 
    u.id,
    u.video_gen_remaining,
    u.image_gen_remaining
FROM user u
WHERE u.id = (
    SELECT user_id FROM generation_task WHERE id = 382
);

下一步操作

  1. 执行上述SQL查询获取详细错误信息
  2. 检查应用日志文件(查找"任务 382"相关日志)
  3. 如果是内容安全问题,尝试更换歌曲或形象
  4. 如果是API问题检查DashScope配额和网络连接
  5. 使用重试接口重新生成