清明上河图视频生成项目

基于 华为云码道(CodeArts) 智能编码助手Seedance 2.5 视频生成模型,复刻清明上河图原貌,让千年古画"活"起来。

项目简介

本项目使用 AI 视频生成技术,将静态的清明上河图(或类似宋代市井风格画作)转化为动态视频,重现宋代汴京的市井繁华景象。通过精心设计的提示词(Prompt),让画面中的人物、船只、旗帜、炊烟等元素依次"苏醒",营造穿越时空回到宋代的沉浸式体验。

核心工作流:

古画图片 ──→ CodeArts 辅助编写脚本 ──→ Seedance 2.5 图生视频 ──→ 动态视频输出
                                              ↑
                                    精心设计的提示词(Prompt)

项目特点

  • 图生视频 + 文生视频双模式:既能基于古画图片生成动态视频,也能纯文字描述生成宋代场景
  • 预设提示词模板:内置 5 套针对清明上河图优化的提示词,开箱即用
  • 批量分镜生成:通过 JSON 配置文件批量提交多分镜任务,一次性生成系列视频
  • 任务管理:支持任务查询、失败重试、执行报告导出
  • 面向教学:详细的实操步骤,适合大学生课堂演示与动手实践

目录结构

qingming-shanghe-tu-video/
├── README.md                        # 本文档(实操指导)
├── requirements.txt                 # Python 依赖
├── .env.example                     # 环境变量配置示例
├── .gitignore                       # Git 忽略规则
├── LICENSE                          # MIT 开源许可证
├── src/                             # 源代码
│   ├── generate_video.py            # 核心视频生成脚本(文生/图生/模板/查询)
│   ├── batch_generate.py            # 批量生成脚本
│   └── prompts/                     # 预设提示词模板
│       ├── qingming_panorama.json   # 市井全景苏醒
│       ├── qingming_bridge.json     # 拱桥穿越特写
│       ├── qingming_river.json      # 河上船只航行
│       ├── qingming_street.json     # 街市烟火
│       └── qingming_text_only.json  # 纯文生视频全景
├── examples/                        # 示例
│   ├── run_examples.ps1             # PowerShell 一键演示脚本
│   └── batch_config.json            # 批量生成配置示例
├── docs/                            # 补充文档
│   ├── api-reference.md             # API 参数参考
│   └── troubleshooting.md           # 常见问题排查
└── assets/                          # 素材目录(放入古画图片)
    └── .gitkeep

快速开始

第一步:环境准备

1. 安装 Python 3.10+

python --version
# 如果未安装,前往 https://www.python.org/downloads/ 下载

2. 安装依赖

cd qingming-shanghe-tu-video
pip install -r requirements.txt

第二步:获取 API Key

  1. 注册/登录 火山引擎控制台
  2. 进入 方舟(Ark)平台:https://console.volcengine.com/ark
  3. 在左侧菜单找到 「API Key 管理」 → 创建 API Key
  4. 「模型广场」 中找到 Seedance 视频生成模型,记录模型 ID(如 doubao-seedance-1-0-pro-250528

第三步:配置环境变量

临时配置(当前窗口有效):

$env:VOLC_API_KEY="你的方舟API Key"
$env:SEEDANCE_MODEL_ID="doubao-seedance-1-0-pro-250528"

永久配置(推荐):

[Environment]::SetEnvironmentVariable("VOLC_API_KEY", "你的方舟API Key", "User")
[Environment]::SetEnvironmentVariable("SEEDANCE_MODEL_ID", "doubao-seedance-1-0-pro-250528", "User")
# 设置后重启 PowerShell 窗口生效

验证配置:

$env:VOLC_API_KEY    # 应显示你的 API Key
$env:SEEDANCE_MODEL_ID  # 应显示模型 ID

第四步:准备素材

将清明上河图图片放入 assets/ 目录:

# 例如将图片复制到 assets 目录
Copy-Item "你的图片路径\qingming.webp" ".\assets\"

支持的图片格式:.jpg.jpeg.png.webp.bmp.gif

第五步:生成视频

方式一:使用预设模板(推荐新手)
# 查看可用模板
python src/generate_video.py templates

# 使用"市井全景苏醒"模板生成视频
python src/generate_video.py template qingming_panorama `
    --image ./assets/qingming.webp `
    -o ./output/panorama.mp4
方式二:图生视频(自定义提示词)
python src/generate_video.py image `
    -p "镜头缓缓拉近石拱桥,桥上行人的衣袂在微风中飘动,河面波光粼粼,一艘木船从桥下穿过。色调保持古画暖黄质感。" `
    --image ./assets/qingming.webp `
    -o ./output/bridge.mp4 `
    --ratio 16:9 `
    --duration 10
方式三:文生视频(不依赖图片)
python src/generate_video.py text `
    -p "宋代汴京清晨,薄雾笼罩河面,木船缓缓航行,河岸商铺幌旗招展,行人往来如织,炊烟袅袅,阳光穿透薄雾洒下暖色柔光,工笔画风格。" `
    -o ./output/text_scene.mp4 `
    --ratio 16:9 `
    --duration 5
方式四:批量生成(多分镜系列)
# 1. 编辑批量配置文件
# 打开 examples/batch_config.json,按需修改提示词和图片路径

# 2. 执行批量生成
python src/batch_generate.py --config examples/batch_config.json

# 3. 如果有任务失败,可以重试
python src/batch_generate.py --config examples/batch_config.json --retry-failed
方式五:一键演示(运行所有示例)
# 运行 PowerShell 演示脚本,依次执行所有示例
.\examples\run_examples.ps1

第六步:查看结果

生成的视频保存在 output/ 目录:

ls output/
# panorama.mp4        - 市井全景苏醒
# bridge.mp4          - 拱桥穿越特写
# text_scene.mp4      - 纯文生视频
# scene_01_panorama.mp4  - 批量生成结果
# ...

命令参考

generate_video.py 命令一览

命令 说明 示例
text 文生视频 python generate_video.py text -p "描述" -o out.mp4
image 图生视频 python generate_video.py image -p "描述" --image img.jpg -o out.mp4
template 模板生成 python generate_video.py template qingming_panorama --image img.jpg -o out.mp4
templates 列出模板 python generate_video.py templates
query 查询任务 python generate_video.py query -t cgt-xxxx

常用参数

参数 说明 可选值
--prompt / -p 视频描述提示词 任意中文/英文描述
--image 本地图片路径 .jpg .png .webp
--image-url 图片 URL https://...
--output / -o 输出文件路径 任意 .mp4 路径
--ratio 宽高比 16:9 / 9:16 / 1:1
--duration 视频时长(秒) 5 / 10(取决于模型支持)
--watermark 添加水印 无参数,加上即生效

提示词设计指南

好的提示词是生成高质量视频的关键。以下是针对清明上河图主题的设计要点:

1. 镜头运动

运镜方式 提示词写法 适用场景
缓推进 “镜头缓缓向前推进” 全景苏醒、整体展示
平移 “镜头沿街道缓缓平移” 街市长卷展示
仰拍上升 “从桥下水面仰拍升至桥面” 拱桥穿越特写
跟随 “镜头跟随一艘木船前行” 河上船只航行

2. 动态元素清单

提示词中应包含 3-5 个动态元素,避免过多导致画面混乱:

  • 自然元素:水波荡漾、柳枝摇曳、炊烟升起、薄雾流动
  • 人物动态:行走、奔跑、交谈、叫卖、划船、挑担
  • 物体动态:船只航行、幌旗飘动、衣袂飘动

3. 色调控制

色调关键词:
  - 主色:米黄、赭石、土褐、暖黄
  - 点缀:青、蓝、红、绿
  - 水面:淡蓝灰、淡青灰
  - 光线:柔和暖阳、清晨薄雾、明暗交错

4. 提示词模板结构

{
  "title": "模板标题",
  "description": "模板说明",
  "mode": "image",
  "prompt": "完整的视频描述提示词...",
  "ratio": "16:9",
  "duration": 10,
  "watermark": false
}

华为云码道(CodeArts)在项目中的角色

本项目从构思到实现,全程使用 华为云码道(CodeArts) 智能编码助手辅助开发:

环节 CodeArts 的作用
需求分析 通过对话式交互,梳理项目需求、确定技术方案
代码编写 自动生成 API 调用脚本、批量生成脚本、提示词模板
提示词设计 根据古画画面分析结果,生成针对性的视频提示词
调试优化 语法检查、错误排查、参数调整
文档生成 自动编写 README、API 参考文档、故障排查指南
项目管理 项目目录结构规划、Git 配置文件生成

体验 CodeArts: 访问华为云码道控制台,创建智能编码会话,即可开始 AI 辅助开发。

课堂演示建议

演示流程(约 30 分钟)

时间 内容 操作
5 min 项目背景介绍 讲解清明上河图与 AI 视频生成
5 min 环境配置演示 现场配置 API Key、安装依赖
10 min 核心功能演示 运行图生视频、展示生成过程
5 min 提示词讲解 分析提示词设计要点
5 min 学生动手实践 修改提示词、尝试生成

学生实践任务

  1. 基础任务:使用预设模板生成一段清明上河图动态视频
  2. 进阶任务:修改提示词,改变镜头运动方向和动态元素
  3. 挑战任务:设计 3 个分镜提示词,用批量生成脚本制作系列视频
  4. 创意任务:选择其他古画(如千里江山图),编写提示词生成动态视频

评估标准

维度 评分要点
功能完成 视频成功生成并能播放
提示词质量 描述具体、动态元素丰富、色调控制合理
创意性 镜头设计有新意、场景选择独特
技术理解 能解释 API 调用流程、参数含义

常见问题

Q: 提示词应该用中文还是英文?

Seedance 模型支持中英文提示词。本项目的预设模板使用中文,因为中文能更精确地描述中国古画的意境和色调。你也可以尝试英文提示词对比效果。

Q: 视频生成需要多长时间?

通常 5 秒视频需要 1-3 分钟,10 秒视频需要 2-5 分钟,具体取决于模型负载。脚本默认轮询超时为 600 秒(10 分钟),可通过环境变量 SEEDANCE_POLL_TIMEOUT 调整。

Q: 图片大小有限制吗?

本地图片会转为 base64 编码发送,建议图片大小不超过 10MB。过大的图片可能导致请求超时。如图片过大,可先用工具压缩。

Q: 生成失败怎么办?
  1. 检查 API Key 和模型 ID 是否正确
  2. 查看错误信息中的 HTTP 状态码和响应内容
  3. 参考 docs/troubleshooting.md 排查
  4. 网络 问题可适当增加轮询超时
Q: 如何生成竖屏视频?

--ratio 参数改为 9:16 即可:

python src/generate_video.py image -p "..." --image img.jpg -o out.mp4 --ratio 9:16

更多问题请参考 docs/troubleshooting.md

技术栈

技术 说明
Python 3.10+ 编程语言
requests HTTP 请求库
Seedance 2.5 字节跳动视频生成模型(火山引擎方舟平台)
华为云码道 CodeArts AI 智能编码助手(项目开发工具)

贡献指南

欢迎提交 Issue 和 Pull Request:

  1. Fork 本仓库
  2. 创建特性分支:git checkout -b feature/new-prompt
  3. 提交更改:git commit -m "添加新提示词模板"
  4. 推送分支:git push origin feature/new-prompt
  5. 创建 Pull Request

欢迎贡献的内容:

  • 新的提示词模板(不同古画、不同镜头风格)
  • 代码优化与 Bug 修复
  • 文档翻译与改进
  • 新功能建议(如视频拼接、配乐等)

致谢

  • 清明上河图:北宋画家张择端绘制的传世名画,本项目的灵感来源
  • 火山引擎方舟平台:提供 Seedance 视频生成模型 API
  • 华为云码道 CodeArts:AI 智能编码助手,辅助本项目开发
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐