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

186 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 唱歌视频生成失败诊断
# 唱歌视频生成失败诊断
## 问题现象
- 从截图看到任务相关的请求
- 日志显示有视频生成失败的情况
- API查询任务382返回"任务不存在"
## 诊断结果
### 任务状态
通过API查询 `http://192.168.1.141:30101/sing/generate/382` 返回:
```json
{"code":404,"msg":"任务不存在","data":null}
```
这说明:
1. 任务382可能已被删除或从未创建
2. 或者任务ID不是382
### 从日志分析
截图中的日志显示:
- 多个请求返回200状态码
- 有"视频生成成功"的日志
- 也有"视频生成失败"的日志
- 提到"任务2次失败"
## 可能的原因
### 1. EMO模型调用失败
唱歌功能使用阿里云DashScope的EMO模型生成视频可能的问题
- API密钥配置错误或过期
- 网络连接问题
- 内容安全审核未通过
- 并发限制超出
### 2. 音频处理失败
- 音频文件下载失败
- 音频分段处理出错
- FFmpeg命令执行失败
### 3. 视频合成失败
- 分段视频生成失败
- 视频拼接过程出错
- OSS上传失败
### 4. 资源限制
- 用户视频生成次数不足
- 并发任务数超出限制
- 内存或磁盘空间不足
## 排查步骤
### 步骤1: 检查数据库中的错误信息
```sql
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/.env``lover/config.py` 中的配置:
- DASHSCOPE_API_KEY
- EMO_MAX_CONCURRENCY
- SING_MERGE_MAX_CONCURRENCY
### 步骤4: 检查分段视频状态
```sql
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配置问题
```python
# 检查配置文件
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
```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. 使用重试接口重新生成