摘要: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 API、OpenAI Sora 2 Prompting Guide、Google DeepMind Veo Prompt Guide、Google Cloud Veo Video Prompt Guide、Runway Gen-4 Video Prompting Guide 和 Runway Gen-4.5 Creating Guide。
1. 开篇:视频提示词不是图像提示词加一句“动起来”
很多人生视频时,会这样写:
结果经常是:
- 人物动作乱;
- 镜头突然漂移;
- 背景不连续;
- 主体一会儿变脸;
- 雨水、灯光、衣服细节乱跳;
- 画面好看,但不像一个可用镜头。
原因是视频不是一张图。
视频至少包含三件事:
所以生视频提示词的核心不是“描述静态画面”,而是“描述一段可拍摄的镜头”。
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
一位穿深灰色风衣的年轻女性,黑色短发,手里拿着透明雨伞,沿着湿润的霓虹街道缓慢前行。
视频里主体稳定比图像更难,所以人物、服装、动作和外观要尽量具体。
3.3 动作
视频必须有动作。
动作要清楚、单一、可拍。
示例:
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
远景
中景
特写
微距
跟拍镜头
手持镜头
航拍镜头
过肩镜头
示例:
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
镜头缓慢推进
镜头缓慢拉远
镜头向左平移
镜头向上摇
环绕主体一圈
固定机位
轻微手持晃动
如果你不希望镜头乱动,直接写:
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
背景是轻微雨声和远处车流声
角色低声说:“我们终于到了。”
没有对白,只有风声和脚步声
如果你不需要声音,可以写:
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 的重点是:
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 也强调基于输入图像和文本提示来控制生成。
实操上有几条建议:
- 重要角色尽量使用参考图;
- 每次提示词重复关键外观特征;
- 服装、发型、道具写具体;
- 不要在同一镜头里让角色做过多动作;
- 多镜头时保持相同角色描述;
- 用固定短语命名角色,例如“女主 A”;
- 不要频繁改变光线、角度和风格。
示例:
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
一个白色机器人站在城市天台边缘,镜头从背后缓慢推进,机器人转头看向镜头,远处城市灯光逐渐亮起。
9.2 动作太多
错误:
改法:
text
女孩沿着街道慢跑,最后回头看向镜头,动作自然流畅。
9.3 镜头没有约束
错误:
改法:
text
固定机位,中景,镜头不移动,主体从画面左侧走到右侧。
9.4 忽略比例
短视频平台要竖屏,广告片常用横屏。
提示词里要写:
text
9:16 竖屏,用于短视频平台。
16:9 横屏,用于网页头图。
9.5 让模型生成复杂文字
视频里的文字更容易抖动或变形。
更稳的方式是:
10. 合规提示:不要拿视频模型做危险或侵权内容
视频生成更容易涉及肖像、版权、品牌和误导风险。
建议避免:
- 未授权复刻真人;
- 仿冒品牌广告;
- 生成误导性新闻画面;
- 生成未经授权的影视角色;
- 生成可能被误认为真实事件的内容;
- 绕过平台水印或安全限制;
- 用于骚扰、诈骗或违法宣传。
商业项目里,最好建立素材授权、人物授权和生成记录管理。
11. 总结:视频提示词是分镜脚本
生图提示词像视觉 brief。
生视频提示词更像分镜脚本。
稳定的视频提示词要写清楚:
text
类型
主体
场景
动作
环境变化
镜头类型
摄像机运动
时长节奏
风格光线
声音
限制
比例
如果要做产品级视频生成,不要只关心提示词,还要关心 API 工作流:
text
创建任务
轮询状态
获取内容
记录日志
控制成本
失败重试
提示词决定画面质量,4sAPI 决定工作流能不能稳定跑起来。