视频生成 (openai兼容)
七牛云 AI 大模型推理 API 支持文生视频(Text-to-Video)功能,兼容 OpenAI Videos API 接口格式,支持 OpenAI Sora 2 模型,方便您集成到各种业务和应用场景中。
Token API 接入点
七牛云 AI 大模型推理 API 提供两个接入域名:
- 主接入点:
https://openai.qiniu.com/v1 - 备接入点:
https://api.qnaigc.com/v1 - 使用前提:获取 API KEY(API 密钥)
支持接口列表
| 接口名 | 说明 |
|---|---|
| /videos | 文生视频创建接口,根据文本描述生成视频 |
| /videos/:id | 查询视频生成状态接口,根据视频任务 ID 查询生成进度和结果 |
支持的模型
| 模型 ID | 模型名称 | 说明 | 状态 |
|---|---|---|---|
| sora-2 | OpenAI Sora 2 | OpenAI 最新的视频生成模型,支持高质量文生视频(图生视频即将支持) | ✅ 已上线 |
| kling-* | 可灵系列 | 可灵系列视频生成模型 | 🚧 即将上线 |
HTTP 调用示例
基础文生视频
使用上一步获取的七牛云 API KEY 调用文生视频接口:
# 调用文生视频 API
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "sora-2",
"prompt": "一只可爱的橘猫在阳光明媚的花园里追逐蝴蝶,照片风格,高清画质"
}'
响应示例:
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "queued",
"created_at": 1234567890,
"updated_at": 1234567890
}
指定视频时长和分辨率
# 生成指定时长和分辨率的视频
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "sora-2",
"prompt": "未来科技城市的天际线,霓虹灯光闪烁,赛博朋克风格,夜景",
"seconds": "4",
"size": "1280x720"
}'
查询视频生成状态
# 查询视频任务状态
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
export VIDEO_ID="qvideo-user123-1234567890123456789"
curl "$OPENAI_BASE_URL/videos/$VIDEO_ID" \
-H "Authorization: Bearer $OPENAI_API_KEY"
响应示例 (处理中):
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "in_progress",
"created_at": 1234567890,
"updated_at": 1234567895
}
响应示例 (已完成):
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "completed",
"created_at": 1234567890,
"updated_at": 1234567920,
"completed_at": 1234567920,
"expires_at": 1234654320,
"seconds": "4",
"size": "1280x720",
"task_result": {
"videos": [
{
"id": "qvideo-user123-1234567890123456789-1",
"url": "https://kodo.qiniu.com/videos/generated-video.mp4",
"duration": "4"
}
]
}
}
请求参数说明
创建视频接口 (POST /videos)
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
| Content-Type | string | 是 | 请求内容类型,固定值:application/json |
Body 参数 (JSON)
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | - | 视频生成模型名称,固定值:sora-2 |
| prompt | string | 是 | - | 视频生成的文本描述提示词,最大 2500 字符 |
| seconds | string | 否 | 4 | 视频时长(秒),可选值 4,8,12 |
| size | string | 否 | 720x1280 | 视频分辨率,格式:宽x高,可选值 1280x720、720x1280 |
参数详细说明
model
- 必填参数
- 指定使用的视频生成模型
- 当前仅支持:
sora-2(OpenAI Sora 2)
prompt
- 必填参数
- 视频生成的文本描述提示词
- 字符数限制:不超过 2500 个字符
- 建议:提示词越详细、具体,生成的视频质量越好
- 建议包含:场景描述、动作、风格、光线、氛围等细节
- 示例:
"一只橘色的猫坐在窗台上,温暖的阳光洒在它身上,它慢慢转头看向镜头,电影风格,高清画质"
seconds
- 可选参数
- 控制生成视频的时长(单位:秒)
- 不同时长会影响生成成本和时间
- 可选值
4,8,12
size
- 可选参数
- 指定生成视频的分辨率,格式为
宽x高 - 示例:
- 横屏:
1280x720 - 竖屏:
720x1280
- 横屏:
- 作用:主要用于判断横竖屏方向
- 宽 > 高:横屏
- 宽 < 高:竖屏
查询视频状态接口 (GET /videos/:id)
Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 视频任务 ID,创建视频时返回的 id 字段 |
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
响应格式
创建视频响应
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "queued",
"created_at": 1234567890,
"updated_at": 1234567890
}
查询状态响应
处理中状态
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "in_progress",
"created_at": 1234567890,
"updated_at": 1234567895
}
成功完成状态
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "completed",
"created_at": 1234567890,
"updated_at": 1234567920,
"completed_at": 1234567920,
"expires_at": 1234654320,
"seconds": "4",
"size": "1280x720",
"task_result": {
"videos": [
{
"id": "qvideo-user123-1234567890123456789-1",
"url": "https://kodo.qiniu.com/videos/generated-video.mp4",
"duration": "4"
}
]
}
}
失败状态
{
"id": "qvideo-user123-1234567890123456789",
"object": "video",
"model": "sora-2",
"status": "failed",
"created_at": 1234567890,
"updated_at": 1234567920,
"error": {
"code": "moderation_blocked",
"message": "Your request was blocked by our moderation system."
}
}
响应参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | string | 视频任务唯一 ID |
| object | string | 对象类型,固定为 video |
| model | string | 使用的模型名称 |
| status | string | 任务状态,见下方状态说明 |
| created_at | integer | 创建时间 (Unix 时间戳,秒) |
| updated_at | integer | 更新时间 (Unix 时间戳,秒) |
| completed_at | integer | 完成时间 (Unix 时间戳,秒),仅在已完成时返回 |
| seconds | string | 视频时长 (秒) |
| size | string | 视频分辨率 (宽 x 高) |
| task_result | object | 任务结果,包含生成的视频列表 |
| task_result.videos | array | 生成的视频列表 |
| task_result.videos[].id | string | 视频 ID,全局唯一 |
| task_result.videos[].url | string | 视频下载 URL(注意:生成的视频会在 7 天后过期,请及时转存) |
| task_result.videos[].duration | string | 视频时长 (秒) |
| error | object | 错误信息,仅在失败时返回 |
| error.code | string | 错误码 |
| error.message | string | 错误描述 |
任务状态说明
| 状态值 | 说明 |
|---|---|
| initializing | 初始化中,任务已创建 |
| queued | 排队中,等待处理 |
| in_progress | 处理中,模型正在生成视频 |
| downloading | 下载中,正在下载结果 |
| uploading | 上传中,正在上传到七牛云存储 |
| completed | 已完成,视频生成成功 |
| failed | 失败,视频生成失败 |
| cancelled | 已取消,用户主动取消 |
如何使用返回的视频?
响应中的 task_result.videos[].url 字段包含视频下载 URL,可通过以下方式使用:
1. 在 HTML 中直接播放
<video controls>
<source src="https://kodo.qiniu.com/videos/generated-video.mp4" type="video/mp4">
您的浏览器不支持视频播放。
</video>
2. 使用命令行工具下载视频
# 使用 curl 下载视频
curl -o generated-video.mp4 "https://kodo.qiniu.com/videos/generated-video.mp4"
# 使用 wget 下载视频
wget -O generated-video.mp4 "https://kodo.qiniu.com/videos/generated-video.mp4"
常见问题
Q: 如何将生成的视频保存到七牛云对象存储?
A: 生成的视频已经自动保存在七牛云对象存储 (Kodo) 中,返回的 URL 即为 Kodo 存储地址,但有效期仅有 7 天。如需转存到您自己的存储空间,推荐使用七牛对象存储的【SDK 中心】进行操作。更多对象存储信息欢迎参考对象存储的【产品使用文档】。
Q: 视频生成需要多长时间?
A: 视频生成时间取决于视频时长和当前队列情况。通常情况下:
- 4 秒视频:2-5 分钟
- 8 秒视频:5-10 分钟
- 12 秒视频:10-15 分钟
建议使用轮询方式查询任务状态。
Q: 生成的视频会保存多久?
A: OpenAI Sora 生成的视频会在 7 天后过期,建议在视频生成后及时下载或转存到您自己的存储空间。
Q: 如何提高视频生成质量?
A:
- 详细的提示词:描述越详细,生成效果越好
- 包含关键要素:场景、动作、风格、光线、氛围等
- 使用具体的风格描述:如"电影风格"、"高清画质"等
Q: 支持哪些视频格式和分辨率?
A:
- 输出格式:MP4
- 分辨率:由模型自动选择,可通过
size参数指定期望的宽高比 - 视频时长:4、8、12 秒
Q: 如何控制生成成本?
A:
- 选择合适的时长:视频时长直接影响成本
- 批量生成:提前规划好需求,避免重复生成
参考文档
文档反馈
(如有产品使用问题,请 提交工单)