影品智创多智能体协同视频创作管理工具,提供11个智能体结构化分工、5阶段协同流程、质量管控标准与数据反馈机制,解决生图失真、视频合成瑕疵等问题,确保输出统一可控
opencv-python>=4.8.0
pillow>=10.0.0
moviepy>=1.0.3
numpy>=1.24.0
# 创建工作目录
mkdir -p ./input/{materials,scripts}
mkdir -p ./output/{drafts,storyboards,final}
mkdir -p ./cache/{images,audio}
触发节点: 用户输入核心需求(商品信息+视频需求)
步骤1: 文案创作师智能体(首节点)
步骤2: 故事策划师智能体
步骤3: 脚本创作师智能体
触发节点: 分镜脚本确认
步骤4: 分镜导演智能体
步骤5: 分镜画师智能体
触发节点: 分镜脚本确认(可并行启动,无需等待视觉内容)
步骤6: 配音师智能体
audio_generator.py生成音频文件步骤7: 字幕师智能体
步骤8: 音效师智能体
触发节点: 分镜图片质检合格
步骤9: 视频工程师智能体
步骤10: 质检智能体(全流程穿插)
触发节点: 全流程质检合格
步骤11: 数据反馈智能体
# 调用图片质量检测脚本
python scripts/image_quality_checker.py --image ./cache/images/shot_001.jpg --resolution 1920x1080
检测维度:
# 调用视频质量检测脚本
python scripts/video_quality_checker.py --video ./output/final/video.mp4 --resolution 1920x1080 --duration 30 --fps 25
检测维度:
触发时机: 分镜画师智能体完成画面设计后
执行步骤:
# 准备分镜脚本JSON文件
cat > ./scripts/storyboard.json << 'EOF'
{
"shots": [
{
"shot_id": "L01",
"description": "智能手表特写,手指滑动屏幕",
"duration": 3.0,
"resolution": "1920x1080"
}
],
"style": "科技风,冷色调,清晰锐利"
}
EOF
# 调用图片生成脚本
python scripts/image_generator.py \
--storyboard ./scripts/storyboard.json \
--output ./output/images \
--style "科技风,冷色调"
输出规范:
./output/images/shot_{shot_id}.jpg参考: references/asset-specifications.md - 图片素材规范
触发时机: 配音师智能体完成旁白文本,音效师智能体完成音效方案后
执行步骤:
# 生成旁白音频
python scripts/audio_generator.py \
--mode narration \
--text "腕上未来,触手可及" \
--voice "professional_male" \
--output ./output/audio/narration_S01.wav
# 生成背景音乐
python scripts/music_generator.py \
--style "科技风,轻快" \
--duration 30 \
--output ./output/audio/background_music.wav
# 混合音频(旁白+背景+音效)
python scripts/audio_generator.py \
--mode mix \
--narration ./output/audio/narration_S01.wav \
--background ./output/audio/background_music.wav \
--effects ./output/audio/sound_effects/ \
--output ./output/audio/merged_audio.wav
输出规范:
./output/audio/参考: references/asset-specifications.md - 音频素材规范
触发时机: 字幕师智能体完成字幕设计后
执行步骤:
# 准备分镜脚本
cat > ./scripts/storyboard.json << 'EOF'
{
"shots": [
{
"shot_id": "L01",
"duration": 3.0,
"text": "腕上未来"
},
{
"shot_id": "L02",
"duration": 3.0,
"text": "触手可及"
}
]
}
EOF
# 生成SRT字幕
python scripts/subtitle_generator.py \
--storyboard ./scripts/storyboard.json \
--format srt \
--output ./output/subtitles/subtitle.srt
输出规范:
./output/subtitles/subtitle.srt 或 .ass参考: references/asset-specifications.md - 字幕素材规范
触发时机: 所有素材(图片/音频/字幕)准备完成并质检合格后
执行步骤:
# 准备项目配置
cat > ./scripts/project_config.json << 'EOF'
{
"images_dir": "./output/images",
"audio_file": "./output/audio/merged_audio.wav",
"subtitle_file": "./output/subtitles/subtitle.srt",
"shots": [
{
"shot_id": "L01",
"duration": 3.0,
"transition": "fade"
},
{
"shot_id": "L02",
"duration": 3.0,
"transition": "cut"
}
],
"width": 1920,
"height": 1080,
"fps": 25,
"duration": 30,
"bitrate": "8000k"
}
EOF
# 验证项目配置
python scripts/video_compositor.py \
--config ./scripts/project_config.json \
--output ./output/temp/validate.mp4 \
--validate_only
# 合成最终视频
python scripts/video_compositor.py \
--config ./scripts/project_config.json \
--output ./output/final/final_video_$(date +%Y%m%d).mp4
输出规范:
./output/final/final_video_{日期}.mp4参考: references/asset-specifications.md - 视频输出规范
python scripts/image_quality_checker.py \
--image ./output/images/shot_L01.jpg \
--resolution 1920x1080 \
--check_limb_anomaly \
--check_blur \
--check_deformation
python scripts/audio_quality_checker.py \
--audio ./output/audio/narration_S01.wav \
--sample_rate 44100 \
--check_noise
python scripts/video_quality_checker.py \
--video ./output/final/final_video_20240122.mp4 \
--resolution 1920x1080 \
--duration 30 \
--fps 25 \
--check_sync
参考: references/quality-standards.md - 质检标准
# 用户请求: "为智能手表创作30秒短视频,科技风,目标年轻人"
# 智能体执行流程:
1. 文案创作师: 输出Slogan "腕上未来,触手可及" + 分镜文案
2. 故事策划师: 输出9个镜头的故事线
3. 脚本创作师: 输出标准化分镜脚本(时长、场景、动作、文案)
4. 分镜导演: 输出9个镜头的画面规范 + 负面规避清单
5. 分镜画师: 生成9张1080P分镜图片(调用质量检测脚本)
6. 字幕师: 输出字幕信息包(并行执行)
7. 音效师: 输出音效方案包(并行执行)
8. 质检智能体: 检测分镜图片,发现第3张图片肢体异常,反馈分镜画师重绘
9. 分镜画师: 重新生成第3张图片,质检合格
10. 视频工程师: 合成视频(调用视频质量检测脚本)
11. 质检智能体: 检测成品视频,音画同步0.08秒,合格
12. 数据反馈: 输出数据统计报告 + 迭代建议
from scripts.image_quality_checker import check_image_quality
result = check_image_quality(
image_path="./cache/images/shot_003.jpg",
expected_resolution=(1920, 1080),
check_limb_anomaly=True,
check_blur=True,
check_deformation=True
)
if not result['overall']:
print(f"发现瑕疵: {result['issues']}")
# 触发分镜画师重绘