返回博客

生视频提示词工程 | 从画面描述到镜头调度

人工智能9871
生视频提示词工程 | 从画面描述到镜头调度

摘要:AI 生视频和 AI 生图最大的区别在于:图像提示词描述一帧,视频提示词描述一段运动。想让 Sora、Veo、Runway 这类视频模型稳定出片,提示词不能只写“一个人在街上走”,还要写清楚镜头类型、主体动作、环境变化、摄像机运动、时长、节奏、风格、音效、连续性和不要出现的内容。本文整理 OpenAI Sora、Google Veo、Runway Gen-4/Gen-4.5 等官方资料中的共通方法,给出一套可复用的生视频提示词框架,并说明如何用 4sAPI 做视频 API 工作流管理。

关键词:生视频提示词、大模型API中转站、4sAPI、Sora、Sora2、Veo、Runway、视频生成API、Prompt Engineering、AI视频、镜头语言

适合读者:AI 视频创作者、短视频运营、广告创意团队、导演/分镜师、AI 应用开发者、自动化工作流用户,以及正在用 Sora2、Veo、Runway 做视频生成的人。

资料来源:本文参考 OpenAI Sora 文本生成视频介绍OpenAI Video Generation APIOpenAI Sora 2 Prompting GuideGoogle DeepMind Veo Prompt GuideGoogle Cloud Veo Video Prompt GuideRunway Gen-4 Video Prompting GuideRunway Gen-4.5 Creating Guide

1. 开篇:视频提示词不是图像提示词加一句“动起来”

很多人生视频时,会这样写:

text
一个女孩走在雨夜的街道上,电影感。

结果经常是:

原因是视频不是一张图。

视频至少包含三件事:

text
画面里有什么
画面如何变化
镜头如何运动

所以生视频提示词的核心不是“描述静态画面”,而是“描述一段可拍摄的镜头”。

2. 官方资料的共识:视频提示词要写运动

Runway Gen-4.5 文档明确提到,Text to Video 应该描述视觉元素和运动;Image to Video 则应该重点描述场景运动。

OpenAI Video Generation API 也强调,Sora 可以从文本创建视频、用图片参考引导生成、复用角色素材、延展已完成片段、编辑已有视频、下载生成结果。

Google Veo 的提示词指南也强调,要先定义视频类型和视觉风格,再描述角色、动作、场景、镜头、声音和氛围。

这些官方资料的共同结论是:

text
视频提示词 = 视觉描述 + 动作描述 + 镜头描述 + 时间描述

如果只写主体和风格,模型只能自由发挥。

如果写清楚运动和镜头,模型才更容易生成可用片段。

3. 生视频提示词的10个核心要素

3.1 视频类型

先告诉模型你要什么类型的视频。

示例:

text
写实广告片
电影感短片
纪录片镜头
产品展示视频
动画短片
定格动画
社交媒体竖屏视频
游戏预告片

不要一开始就写复杂剧情。先定义类型,模型才知道应该遵循什么视觉语法。

3.2 主体

主体要稳定。

弱提示:

text
一个人在街上走。

强提示:

text
一位穿深灰色风衣的年轻女性,黑色短发,手里拿着透明雨伞,沿着湿润的霓虹街道缓慢前行。

视频里主体稳定比图像更难,所以人物、服装、动作和外观要尽量具体。

3.3 动作

视频必须有动作。

动作要清楚、单一、可拍。

示例:

text
缓慢走向镜头
抬头看向远处
把咖啡杯放到桌上
打开一本旧书
机器人转身看向城市天际线
镜头中水滴从叶尖滑落

不要一次写太多动作:

text
她跑步、转身、跳舞、看手机、上车、消失在雨夜里。

短视频模型更适合一个镜头一个主要动作。

3.4 场景变化

视频不是静态背景。

可以描述环境如何变化:

text
雨水持续落下,路面积水反射霓虹灯
窗帘被微风轻轻吹动
太阳从云层后露出,光线逐渐变暖
咖啡表面有轻微蒸汽升起
远处车流缓慢经过

这些细节会让视频更像真实拍摄。

3.5 镜头类型

镜头类型决定画面语言。

常用词:

text
wide shot
medium shot
close-up
macro shot
over-the-shoulder shot
tracking shot
handheld shot
drone shot

中文可以写:

text
远景
中景
特写
微距
跟拍镜头
手持镜头
航拍镜头
过肩镜头

示例:

text
中景跟拍镜头,摄像机在人物前方缓慢后退。

3.6 摄像机运动

这是视频提示词最重要的部分之一。

常见运动:

text
slow push-in
slow pull-back
pan left
tilt up
dolly shot
tracking shot
orbit around the subject
locked-off camera
handheld subtle shake

中文可写:

text
镜头缓慢推进
镜头缓慢拉远
镜头向左平移
镜头向上摇
环绕主体一圈
固定机位
轻微手持晃动

如果你不希望镜头乱动,直接写:

text
固定机位,镜头不移动。

3.7 时长和节奏

视频要有时间感。

示例:

text
5 秒镜头
8 秒广告片段
前 2 秒镜头推进,中间 4 秒主体转身,最后 2 秒定格
节奏缓慢,动作自然,不要快速剪辑

如果不写节奏,模型可能会在短时间里塞太多动作。

3.8 风格和质感

风格决定整体视觉。

示例:

text
cinematic realism
documentary style
high-end product commercial
anime style
claymation
retro VHS
IMAX nature documentary
fashion film

中文可写:

text
写实电影感
高端产品广告
纪录片风格
复古胶片质感
时尚短片
动画电影风

风格尽量统一,不要把多个风格混在一起。

3.9 声音和对白

Veo 等新一代视频模型已经开始支持音频、对白或环境声提示。即使某些模型不生成音频,写清楚声音也能帮助定义氛围。

示例:

text
背景是轻微雨声和远处车流声
角色低声说:“我们终于到了。”
没有对白,只有风声和脚步声

如果你不需要声音,可以写:

text
无对白,无字幕,画面中不要出现文字。

3.10 限制条件

视频模型容易出现不可控细节,所以要写限制。

示例:

text
不要切镜头
不要出现字幕
不要人物变脸
不要多余手指
不要突然出现新角色
不要夸张镜头晃动
不要卡通化
保持角色服装一致
保持背景连续

限制不是越多越好,但关键风险一定要写。

4. 通用生视频提示词模板

可以直接套这个模板:

text
生成一个【时长】的视频镜头。

视频类型:【写实广告片/电影短片/产品展示/动画等】
主体:【人物/物体/动物/场景主角】
场景:【地点、时间、环境】
动作:【主体在这段时间里做什么】
场景变化:【光线、天气、背景、物体如何变化】
镜头类型:【远景/中景/特写/微距等】
摄像机运动:【推进/拉远/跟拍/固定/环绕】
节奏:【缓慢/紧张/平稳/快速】
风格:【电影感/纪录片/广告/动画/复古等】
光线和色彩:【布光、色调、氛围】
声音:【对白、环境声、是否无声】
限制:【不要出现的内容、保持一致的内容】
比例和清晰度:【16:9 / 9:16 / 1:1,分辨率要求】

示例:

text
生成一个 8 秒的写实电影感视频镜头。

主体:一位穿深灰色风衣的年轻女性,黑色短发,手里拿着透明雨伞
场景:雨夜的赛博朋克街道,霓虹灯反射在湿润路面上
动作:她缓慢走向镜头,最后抬头看向远处的蓝色广告牌
场景变化:雨水持续落下,远处车辆缓慢经过,路面积水有细微波纹
镜头类型:中景跟拍
摄像机运动:摄像机在人物前方缓慢后退,保持人物居中
节奏:缓慢、克制、电影感
风格:cinematic realism,高对比夜景,浅景深
光线和色彩:蓝紫色霓虹光,柔和背光,低饱和暗部
声音:无对白,只有雨声和远处车流声
限制:不要切镜头,不要字幕,不要人物变脸,不要新增角色
比例和清晰度:16:9,高清

5. Text to Video 和 Image to Video 写法不同

Runway 文档里有一个很重要的区分:

text
Text to Video:描述视觉元素和运动
Image to Video:重点描述运动

5.1 Text to Video

你从零生成视频,必须把画面也说清楚。

示例:

text
一只白色机械鸟站在未来城市天台边缘,清晨阳光从高楼间穿过。镜头从远景缓慢推进到机械鸟特写,机械鸟展开金属翅膀,翅膀边缘反射金色阳光。写实科幻电影感,固定单镜头,节奏缓慢,不要字幕。

5.2 Image to Video

如果你已经上传参考图,不要重复描述整张图,更应该描述“图怎么动”。

示例:

text
保持参考图中的人物外观、服装和背景不变。让人物轻轻转头看向镜头,头发被微风吹动,背景灯光轻微闪烁。镜头固定,不要改变构图,不要新增人物。

Image to Video 的重点是:

text
保留什么
怎么动
镜头动不动
不要改变什么

6. 多镜头视频:先写分镜,不要一口气乱塞

如果你想做 20 秒以上的视频,不建议一个提示词塞完整剧情。

更稳的方法是按镜头拆分:

text
镜头1:建立场景
镜头2:主体动作
镜头3:关键细节
镜头4:情绪收束

示例:

text
镜头1,5秒:远景,雨夜城市街道,霓虹灯闪烁,空镜头,固定机位。
镜头2,5秒:中景,主角撑伞走入画面,镜头缓慢跟拍。
镜头3,5秒:特写,雨滴落在透明雨伞上,背景霓虹虚化。
镜头4,5秒:主角停下脚步抬头看向远处广告牌,镜头缓慢推进。

如果使用支持视频延展的模型,可以先生成第一段,再用 extension 继续延展。OpenAI Video Generation API 明确支持继续已完成片段和编辑已有视频,这比一次生成长片更可控。

7. 连续性:角色、物体和场景怎么保持一致

视频生成最难的是连续性。

OpenAI Video Generation API 提到可以复用角色资产,增强多次生成中的视觉一致性。Runway Gen-4 也强调基于输入图像和文本提示来控制生成。

实操上有几条建议:

示例:

text
女主 A:黑色短发,深灰色风衣,透明雨伞,银色耳环。所有镜头都保持这个外观,不要改变发型、服装和道具。

8. 4sAPI视频模型接入教程

视频生成比文本和图片更需要工作流管理。

原因很简单:

如果你通过 4sAPI 接 Sora2 或其他视频模型,建议把视频生成单独做成一组 Key 和工作流。

推荐 Key 命名:

text
sora2-video-test
sora2-video-prod
veo-video-campaign
runway-storyboard-workflow

8.1 准备API Key和视频模型ID

先在 4sAPI 后台完成:

text
1. 创建视频生成专用 API Key
2. 在模型广场选择 Sora2 或其他视频模型
3. 复制对应模型 ID
4. 给视频 Key 设置独立额度

视频生成比文本和图片更容易消耗预算,所以一定要和普通聊天、代码生成、图片生成分开。

推荐 Key 命名:

text
sora2-video-test
sora2-video-prod
veo-video-campaign
runway-storyboard-workflow

如果你的工具使用环境变量,可以这样配置:

env
FOURSAPI_BASE_URL=https://4sapi.com/v1
FOURSAPI_API_KEY=sk-xxxxxxxxxxxxxxxx
FOURSAPI_VIDEO_MODEL=sora_video2

实际模型 ID 以 4sAPI 模型广场为准。

8.2 Sora2异步视频接口三步走

视频生成通常不是一次请求直接返回 MP4,而是异步任务。

推荐工作流:

text
创建视频任务
  -> 轮询状态
  -> 获取视频内容
  -> 保存到对象存储
  -> 记录 prompt、seed、模型、费用和结果

如果你用的是 Sora2 官方异步格式,要特别注意:

text
POST /v1/videos:创建视频任务
GET /v1/videos/{id}:查询状态
GET /v1/videos/{id}/content:获取视频内容

这也是上一篇 Sora2 排障文里最核心的坑:状态接口不会直接给视频,真正取视频要走 /content

8.3 第一步:创建视频任务

请求:

http
POST https://4sapi.com/v1/videos

cURL 示例:

bash
curl --location 'https://4sapi.com/v1/videos' \
  --header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "sora_video2",
    "prompt": "生成一个 8 秒写实电影感视频镜头:一位穿深灰色风衣的年轻女性撑透明雨伞,缓慢走在雨夜赛博朋克街道上。镜头中景跟拍,摄像机在人物前方缓慢后退,霓虹灯反射在湿润路面上。不要字幕,不要切镜头,不要人物变脸。",
    "size": "1920x1080",
    "seconds": "8",
    "n": 1,
    "watermark": false,
    "private": false,
    "storyboard": false
  }'

这一步返回的重点是任务 id

后面查状态和取视频,都要用这个 id

8.4 第二步:查询视频状态

请求:

http
GET https://4sapi.com/v1/videos/{id}

cURL 示例:

bash
curl --location --request GET 'https://4sapi.com/v1/videos/sora-2:task_xxxxxxxxxxxxx' \
  --header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json'

这一步只用来查询任务是否完成。

注意:状态接口不等于下载接口。

如果你在这里没有看到视频链接,不代表生成失败。

8.5 第三步:获取视频内容

任务完成后,再请求:

http
GET https://4sapi.com/v1/videos/{id}/content

cURL 示例:

bash
curl --location 'https://4sapi.com/v1/videos/sora-2:task_xxxxxxxxxxxxx/content' \
  --header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxx' \
  --output output.mp4

真正的视频内容在 /content 这一步获取。

很多人说“API 请求成功但拿不到视频”,就是因为只做了前两步,没有调用 /content

8.6 Node.js轮询示例

js
const API_KEY = process.env.FOURSAPI_API_KEY;
const BASE_URL = "https://4sapi.com/v1";

async function createVideo(prompt) {
  const res = await fetch(`${BASE_URL}/videos`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "sora_video2",
      prompt,
      size: "1920x1080",
      seconds: "8",
      n: 1,
      watermark: false,
      private: false,
      storyboard: false,
    }),
  });

  if (!res.ok) {
    throw new Error(`create failed: ${res.status} ${await res.text()}`);
  }

  return await res.json();
}

async function getVideoStatus(id) {
  const res = await fetch(`${BASE_URL}/videos/${encodeURIComponent(id)}`, {
    headers: { Authorization: `Bearer ${API_KEY}` },
  });

  if (!res.ok) {
    throw new Error(`status failed: ${res.status} ${await res.text()}`);
  }

  return await res.json();
}

async function getVideoContent(id) {
  const res = await fetch(`${BASE_URL}/videos/${encodeURIComponent(id)}/content`, {
    headers: { Authorization: `Bearer ${API_KEY}` },
  });

  if (!res.ok) {
    throw new Error(`content failed: ${res.status} ${await res.text()}`);
  }

  return await res.arrayBuffer();
}

实际状态字段以 4sAPI 当前返回为准。工程里建议加最大等待时间,例如 5 到 10 分钟,避免无限轮询。

8.7 工作流平台怎么拆节点

如果你在 Dify、n8n、Coze 或自研工作流里接视频模型,建议拆成 5 个节点:

text
节点1:创建视频任务
节点2:等待 5-10 秒
节点3:查询任务状态
节点4:条件判断,完成则继续,未完成则回到等待
节点5:获取视频内容并保存

不要把视频生成写成一个同步节点。

视频模型天然是异步任务,拆开才能稳定。

9. 常见错误

9.1 只描述静态画面

错误:

text
一个机器人站在城市天台,电影感。

改法:

text
一个白色机器人站在城市天台边缘,镜头从背后缓慢推进,机器人转头看向镜头,远处城市灯光逐渐亮起。

9.2 动作太多

错误:

text
女孩跑步、跳跃、转身、打开门、上车、回头微笑。

改法:

text
女孩沿着街道慢跑,最后回头看向镜头,动作自然流畅。

9.3 镜头没有约束

错误:

text
做一个电影镜头。

改法:

text
固定机位,中景,镜头不移动,主体从画面左侧走到右侧。

9.4 忽略比例

短视频平台要竖屏,广告片常用横屏。

提示词里要写:

text
9:16 竖屏,用于短视频平台。
16:9 横屏,用于网页头图。

9.5 让模型生成复杂文字

视频里的文字更容易抖动或变形。

更稳的方式是:

text
画面中不要出现字幕或文字,后期再加标题。

10. 合规提示:不要拿视频模型做危险或侵权内容

视频生成更容易涉及肖像、版权、品牌和误导风险。

建议避免:

商业项目里,最好建立素材授权、人物授权和生成记录管理。

11. 总结:视频提示词是分镜脚本

生图提示词像视觉 brief。

生视频提示词更像分镜脚本。

稳定的视频提示词要写清楚:

text
类型
主体
场景
动作
环境变化
镜头类型
摄像机运动
时长节奏
风格光线
声音
限制
比例

如果要做产品级视频生成,不要只关心提示词,还要关心 API 工作流:

text
创建任务
轮询状态
获取内容
记录日志
控制成本
失败重试

提示词决定画面质量,4sAPI 决定工作流能不能稳定跑起来。

标签:AI视频生成提示词工程soraveo4SAPI

推荐阅读

探索更多前沿洞察与行业干货。