视频生成模型具备出色的语义理解能力,可根据用户输入的文本、图片等内容,快速生成优质的视频片段。通过这篇教程您可以学习到如何通过调用视频生成模型 API 来生成视频。
模型优势
- 逼真度极高,具备丰富的细节层次。
- 视觉美感高,展示专业级色彩与光影。
- 运动画面流畅自然,速度快慢符合物理运动规律。
应用场景
模型支持生成具备高级视觉美感与丰富细节层次的视频,能够将用户的文本、图像转化为高质量的视频作品。可以应用于电商营销、城市文旅宣传、动画教育、短剧等广泛的应用场景。
场景 | 描述 |
---|
广告创意 | 可依据产品特点和营销目标迅速产出广告视频,为广告创意提供多样选择。 |
影视制作 | 生成各种复杂的特效镜头,快速构建逼真的虚拟场景、为角色生成动画、快速生成短剧视频等。 |
教育动画 | 快速生成教学动画示例,直观展示原理、制作流程等知识内容,辅助动画教学。 |
游戏开发 | 生成游戏中的动画片段、角色动作、过场动画等视频内容,加速游戏创意的可视化进程。 |
社交媒体互动 | 将照片转化为动态视频用于故事讲述与日常记录。如让老照片动起来、个性化表情包等。 |
模型列表
当前支持视频生成的模型如下。
模型名称 | 模型版本 | 生成方式 | 生成视频格式 | 模型说明 | 计费 |
---|
Doubao-视频生成-Seaweed | 241128 | | | 基于Transformer结构,利用时空压缩的潜空间进行训练,适配横屏、竖屏,并能够根据用户输入的高清图像分辨率进行适配和保真。 | 0.03 元/千 token
具体详情参见 视频生成模型 |
文生视频示例
输入示例 | 输出视频 |
---|
文本提示词:
一位身穿绿色亮片礼服的女性站在粉红色背景前,周围飘落着五彩斑斓的彩纸 | |
文本提示词:
一只蜥蜴 | |
文本提示词:
真实电影场景中,林黛玉端坐于古朴雅致的厅堂,凝视着一册精美的线装古籍,面容满含忧伤,镜头聚焦其半身,捕捉那份细腻的情感 | |
图生视频示例
输入示例 | 输出视频 |
---|
文本提示词:
一个玉质月饼,镜头旋转摇镜,展现物体的其他角度,镜头缓慢前移,月饼的反光凸显它玉的质感
首帧图片:
 | |
文本提示词:
女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动
首帧图片:
 | |
文本提示词:
一个老人深情的看海,海风吹动他的头发,镜头向右摇镜,逐渐看到老人的正面,显现出他沧桑的脸
首帧图片:
 | |
文本提示词:
一个女孩在水中,她开心的笑了起来,她的头发随着水摆动
首帧图片:
 | |
接口说明
视频生成的 API 接口详细介绍请参见视频生成 API。
前提条件
快速开始
您可以通过下面代码快速体验文生视频能力。
说明
- 视频生成为异步接口,您需要先创建视频生成任务,再通过视频生成任务的 ID 去查询视频生成结果。
- 视频生成过程耗时较长,查询结果时请您耐心等待。
import os
# 通过 pip install 'volcengine-python-sdk[ark]' 安装方舟SDK
from volcenginesdkarkruntime import Ark
# 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
# 初始化Ark客户端,从环境变量中读取您的API Key
client = Ark(
# 此为默认路径,您可根据业务所在地域进行配置
base_url="https://ark.cn-beijing.volces.com/api/v3",
# 从环境变量中获取您的 API Key。此为默认方式,您可根据需要进行修改
api_key=os.environ.get("ARK_API_KEY"),
)
if __name__ == "__main__":
print("----- create request -----")
create_result = client.content_generation.tasks.create(
model="ep-2025****", # 替换成您的模型推理接入点 ID
content=[
{
# 文本提示词
"type": "text",
"text": "戴着帽子的老爷爷面带微笑往前走"
},
]
)
print(create_result)
print("----- get request -----")
get_result = client.content_generation.tasks.get(task_id=create_result.id)
print(get_result)
模型回复预览:
# 视频生成过程中
----- create request -----
ContentGenerationTaskID(id='cgt-2025****-**')
----- get request -----
ContentGenerationTask(id='cgt-2025****-**', model='doubao-seaweed-241128', status='running', failure_reason=None, content=None, usage=None, created_at=1737530694, updated_at=1737530694)
# 视频生成后
----- get request -----
ContentGenerationTask(id='cgt-2025****-**', model='doubao-seaweed-241128', status='succeeded', failure_reason=None, content=Content(video_url='https://xxx'), usage=Usage(completion_tokens=108900), created_at=1737530694, updated_at=1737530766)
使用限制
- 任务数据(如任务状态、视频URL等)仅保留24小时,超时后会被自动清除。请您务必及时保存生成的视频。
- 单主账号在方舟服务端排队(
queued
)的任务数量上限为120个。
使用说明及建议
- 用简洁准确的自然语言写出你想要的效果。
- 如果有较为明确的效果预期,建议先用生图模型生成符合预期的图片,再用图生视频进行视频片段的生成
- 文生视频会有较大的结果随机性,可以用于激发创作灵感
- 图生视频时请尽量上传高清高质量的图片,上传图片的质量对图生视频影响较大。
- 当生成的视频不符合预期时,建议修改提示词,将抽象描述换成具象描述,并注意删除不重要的部分,将重要内容前置。
使用示例
设置生成视频格式
通过在文本提示词后追加--[parameters]
的方式,可控制视频输出的规格,包括宽高比、帧率、分辨率等。
// 指定生成视频的宽高比为16:9,时长为 5 秒,帧率为 24 fps,分辨率为720p,包含水印
一位身穿绿色亮片礼服的女性站在粉红色背景前,周围飘落着五彩斑斓的彩纸 --rt 16:9 --dur 5 --fps 24 --rs 720p --wm true
文生视频
import os
from volcenginesdkarkruntime import Ark
# 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
# 初始化Ark客户端,从环境变量中读取您的API Key
client = Ark(
# 从环境变量中获取您的 API Key。此为默认方式,您可根据需要进行修改
api_key=os.environ.get("ARK_API_KEY"),
)
print("----- create request -----")
# 创建视频生成任务
create_result = client.content_generation.tasks.create(
model="ep-2025****", # 替换成您的模型推理接入点 ID
content=[
{
# 文本提示词与参数组合
"type": "text",
"text": "一位身穿绿色亮片礼服的女性站在粉红色背景前,周围飘落着五彩斑斓的彩纸 --dur 10"
}
]
)
print(create_result)
print("----- get request -----")
# 获取任务详情
get_result = client.content_generation.tasks.get(task_id=create_result.id)
print(get_result)
print("----- list request -----")
# 列出符合特定条件的任务
list_result = client.content_generation.tasks.list(
page_num=1,
page_size=10,
status="queued", # 按状态筛选, e.g succeeded, failed, running, cancelled
# model="<YOUR_MODEL_EP>, # 按 ep 筛选
# task_ids=["test-id-1", "test-id-2"] # 按 task_id 筛选
)
print(list_result)
print("----- delete request -----")
# 通过任务 id 删除任务
try:
client.content_generation.tasks.delete(task_id=create_result.id)
print(create_result.id)
except Exception as e:
print(f"failed to delete task: {e}")
package com.volcengine.ark.runtime;
import com.volcengine.ark.runtime.model.content.generation.DeleteContentGenerationTaskResponse;
import com.volcengine.ark.runtime.model.content.generation.*;
import com.volcengine.ark.runtime.model.content.generation.CreateContentGenerationTaskRequest.Content;
import com.volcengine.ark.runtime.service.ArkService;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ContentGenerationTaskExample {
// 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
// 初始化Ark客户端,从环境变量中读取您的API Key
static String apiKey = System.getenv("ARK_API_KEY");
static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
static Dispatcher dispatcher = new Dispatcher();
static ArkService service = ArkService.builder()
.dispatcher(dispatcher)
.connectionPool(connectionPool)
.apiKey(apiKey)
.build();
public static void main(String[] args) {
String model = "ep-2025****"; //替换为您的模型推理接入点 ID
System.out.println("
----- CREATE Task Request -----");
List<Content> contents = new ArrayList<>();
// 文本提示词与参数组合
contents.add(Content.builder()
.type("text")
.text("一位身穿绿色亮片礼服的女性站在粉红色背景前,周围飘落着五彩斑斓的彩纸 --dur 10")
.build());
// 创建视频生成任务
CreateContentGenerationTaskRequest createRequest = CreateContentGenerationTaskRequest.builder()
.model(model)
.content(contents)
.build();
CreateContentGenerationTaskResult createResult = service.createContentGenerationTask(createRequest);
System.out.println(createResult);
System.out.println("
----- GET Task Request -----");
// 获取任务详情
GetContentGenerationTaskRequest getRequest = GetContentGenerationTaskRequest.builder()
.taskId(createResult.getId())
.build();
GetContentGenerationTaskResponse getResult = service.getContentGenerationTask(getRequest);
System.out.println(getResult);
System.out.println("
----- LIST Task Request -----");
// 列出符合特定条件的任务
ListContentGenerationTasksRequest listRequest = ListContentGenerationTasksRequest.builder()
.pageNum(1)
.pageSize(10)
.status(TaskStatus.RUNNING)
.addTaskId(createResult.getId()) // 按 task_id 筛选
// 如果您需要按多个 task_id 进行筛选
// .taskIds(Arrays.asList("test-id-1", "test-id-2"))
.model(model)
.build();
ListContentGenerationTasksResponse listResponse = service.listContentGenerationTasks(listRequest);
System.out.println(listResponse);
System.out.println("
----- DELETE Task Request -----");
// 通过任务 id 删除任务
DeleteContentGenerationTaskRequest deleteRequest = DeleteContentGenerationTaskRequest.builder()
.taskId(getResult.getId())
.build();
try {
DeleteContentGenerationTaskResponse deleteResult = service.deleteContentGenerationTask(deleteRequest);
System.out.println(deleteResult);
} catch (Exception e) {
System.out.println(e.getMessage());
}
service.shutdownExecutor();
}
}
package main
import (
"context"
"fmt"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
)
func main() {
// 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
// 初始化Ark客户端,从环境变量中读取您的API Key
client := arkruntime.NewClientWithApiKey(
// 从环境变量中获取您的 API Key。此为默认方式,您可根据需要进行修改
os.Getenv("ARK_API_KEY"),
)
ctx := context.Background()
modelEp := "ep-2025****" //替换为您的模型推理接入点 ID
fmt.Println("----- create content generation task -----")
// 创建视频生成任务
createReq := model.CreateContentGenerationTaskRequest{
Model: modelEp,
Content: []*model.CreateContentGenerationContentItem{
{
// 文本提示词与参数组合
Type: model.ContentGenerationContentItemTypeText,
Text: volcengine.String("一位身穿绿色亮片礼服的女性站在粉红色背景前,周围飘落着五彩斑斓的彩纸 --dur 10"),
},
},
}
createResponse, err := client.CreateContentGenerationTask(ctx, createReq)
if err != nil {
fmt.Printf("create content generation error: %v
", err)
return
}
fmt.Printf("Task Created with ID: %s
", createResponse.ID)
fmt.Println("----- get content generation task -----")
// 获取任务详情
taskID := createResponse.ID
getRequest := model.GetContentGenerationTaskRequest{ID: taskID}
getResponse, err := client.GetContentGenerationTask(ctx, getRequest)
if err != nil {
fmt.Printf("get content generation task error: %v
", err)
return
}
fmt.Printf("Task ID: %s
", getResponse.ID)
fmt.Printf("Model: %s
", getResponse.Model)
fmt.Printf("Status: %s
", getResponse.Status)
fmt.Printf("Video URL: %s
", getResponse.Content.VideoURL)
fmt.Printf("Completion Tokens: %d
", getResponse.Usage.CompletionTokens)
fmt.Printf("Created At: %d
", getResponse.CreatedAt)
fmt.Printf("Updated At: %d
", getResponse.UpdatedAt)
if getResponse.Error != nil {
fmt.Printf("Error Code: %s
", getResponse.Error.Code)
fmt.Printf("Error Message: %s
", getResponse.Error.Message)
}
fmt.Println("----- list content generation task -----")
// 列出符合特定条件的任务
listRequest := model.ListContentGenerationTasksRequest{
PageNum: volcengine.Int(1),
PageSize: volcengine.Int(10),
Filter: &model.ListContentGenerationTasksFilter{
Status: volcengine.String(model.StatusSucceeded),
//TaskIDs: volcengine.StringSlice([]string{"cgt-example-1", "cgt-example-2"}),
//Model: volcengine.String(modelEp),
},
}
listResponse, err := client.ListContentGenerationTasks(ctx, listRequest)
if err != nil {
fmt.Printf("failed to list content generation tasks: %v
", err)
}
fmt.Printf("ListContentGenerationTasks returned %v results
", listResponse.Total)
fmt.Println("----- delete content generation task -----")
// 通过任务 id 删除任务
deleteRequest := model.DeleteContentGenerationTaskRequest{ID: taskID}
err = client.DeleteContentGenerationTask(ctx, deleteRequest)
if err != nil {
fmt.Printf("delete content generation task error: %v
", err)
} else {
fmt.Println("successfully deleted task id: ", taskID)
}
}
图生视频
import os
from volcenginesdkarkruntime import Ark
# 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
# 初始化Ark客户端,从环境变量中读取您的API Key
client = Ark(
# 从环境变量中获取您的 API Key。此为默认方式,您可根据需要进行修改
api_key=os.environ.get("ARK_API_KEY"),
)
print("----- create request -----")
# 创建视频生成任务
create_result = client.content_generation.tasks.create(
model="ep-2025****", # 替换成您的模型推理接入点 ID
content=[
{
# 文本提示词与参数组合
"type": "text",
"text": "女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动 --ratio 16:9 --dur 5"
},
{
# 图片URL
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png"
},
}
]
)
print(create_result)
print("----- get request -----")
# 获取任务详情
get_result = client.content_generation.tasks.get(task_id=create_result.id)
print(get_result)
print("----- list request -----")
# 列出符合特定条件的任务
list_result = client.content_generation.tasks.list(
page_num=1,
page_size=10,
status="queued", # 按状态筛选, e.g succeeded, failed, running, cancelled
# model="<YOUR_MODEL_EP>", # 按 ep 筛选
# task_ids=["test-id-1", "test-id-2"] # 按 task_id 筛选
)
print(list_result)
print("----- delete request -----")
# 通过任务 id 删除任务
try:
client.content_generation.tasks.delete(task_id=create_result.id)
print(create_result.id)
except Exception as e:
print(f"failed to delete task: {e}")
package com.volcengine.ark.runtime;
import com.volcengine.ark.runtime.model.content.generation.DeleteContentGenerationTaskResponse;
import com.volcengine.ark.runtime.model.content.generation.*;
import com.volcengine.ark.runtime.model.content.generation.CreateContentGenerationTaskRequest.Content;
import com.volcengine.ark.runtime.service.ArkService;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ContentGenerationTaskExample {
// 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
// 初始化Ark客户端,从环境变量中读取您的API Key
static String apiKey = System.getenv("ARK_API_KEY");
static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
static Dispatcher dispatcher = new Dispatcher();
static ArkService service = ArkService.builder()
.dispatcher(dispatcher)
.connectionPool(connectionPool)
.apiKey(apiKey)
.build();
public static void main(String[] args) {
String model = "ep-2025****"; //替换为您的模型推理接入点 ID
System.out.println("
----- CREATE Task Request -----");
List<Content> contents = new ArrayList<>();
// 文本提示词与参数组合
contents.add(Content.builder()
.type("text")
.text("女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动 --ratio 16:9 --dur 5")
.build());
// 图片URL
contents.add(Content.builder()
.type("image_url")
.imageUrl(CreateContentGenerationTaskRequest.ImageUrl.builder()
.url("https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png")
.build())
.build());
// 创建视频生成任务
CreateContentGenerationTaskRequest createRequest = CreateContentGenerationTaskRequest.builder()
.model(model)
.content(contents)
.build();
CreateContentGenerationTaskResult createResult = service.createContentGenerationTask(createRequest);
System.out.println(createResult);
System.out.println("
----- GET Task Request -----");
// 获取任务详情
GetContentGenerationTaskRequest getRequest = GetContentGenerationTaskRequest.builder()
.taskId(createResult.getId())
.build();
GetContentGenerationTaskResponse getResult = service.getContentGenerationTask(getRequest);
System.out.println(getResult);
System.out.println("
----- LIST Task Request -----");
// 列出符合特定条件的任务
ListContentGenerationTasksRequest listRequest = ListContentGenerationTasksRequest.builder()
.pageNum(1)
.pageSize(10)
.status(TaskStatus.RUNNING)
.addTaskId(createResult.getId()) // 按 task_id 筛选
// 如果您需要按多个 task_id 进行筛选
// .taskIds(Arrays.asList("test-id-1", "test-id-2"))
.model(model)
.build();
ListContentGenerationTasksResponse listResponse = service.listContentGenerationTasks(listRequest);
System.out.println(listResponse);
System.out.println("
----- DELETE Task Request -----");
// 通过任务 id 删除任务
DeleteContentGenerationTaskRequest deleteRequest = DeleteContentGenerationTaskRequest.builder()
.taskId(getResult.getId())
.build();
try {
DeleteContentGenerationTaskResponse deleteResult = service.deleteContentGenerationTask(deleteRequest);
System.out.println(deleteResult);
} catch (Exception e) {
System.out.println(e.getMessage());
}
service.shutdownExecutor();
}
}
package main
import (
"context"
"fmt"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
)
func main() {
// 请确保您已将 API Key 存储在环境变量 ARK_API_KEY 中
// 初始化Ark客户端,从环境变量中读取您的API Key
client := arkruntime.NewClientWithApiKey(
// 从环境变量中获取您的 API Key。此为默认方式,您可根据需要进行修改
os.Getenv("ARK_API_KEY"),
)
ctx := context.Background()
modelEp := "ep-2025****" //替换为您的模型推理接入点 ID
fmt.Println("----- create content generation task -----")
// 创建视频生成任务
createReq := model.CreateContentGenerationTaskRequest{
Model: modelEp,
Content: []*model.CreateContentGenerationContentItem{
{
// 文本提示词与参数组合
Type: model.ContentGenerationContentItemTypeText,
Text: volcengine.String("女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动 --ratio 16:9 --dur 5"),
},
{
// 图片URL
Type: model.ContentGenerationContentItemTypeImage,
ImageURL: &model.ImageURL{
URL: "https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png",
},
},
},
}
createResponse, err := client.CreateContentGenerationTask(ctx, createReq)
if err != nil {
fmt.Printf("create content generation error: %v
", err)
return
}
fmt.Printf("Task Created with ID: %s
", createResponse.ID)
fmt.Println("----- get content generation task -----")
// 获取任务详情
taskID := createResponse.ID
getRequest := model.GetContentGenerationTaskRequest{ID: taskID}
getResponse, err := client.GetContentGenerationTask(ctx, getRequest)
if err != nil {
fmt.Printf("get content generation task error: %v
", err)
return
}
fmt.Printf("Task ID: %s
", getResponse.ID)
fmt.Printf("Model: %s
", getResponse.Model)
fmt.Printf("Status: %s
", getResponse.Status)
fmt.Printf("Video URL: %s
", getResponse.Content.VideoURL)
fmt.Printf("Completion Tokens: %d
", getResponse.Usage.CompletionTokens)
fmt.Printf("Created At: %d
", getResponse.CreatedAt)
fmt.Printf("Updated At: %d
", getResponse.UpdatedAt)
if getResponse.Error != nil {
fmt.Printf("Error Code: %s
", getResponse.Error.Code)
fmt.Printf("Error Message: %s
", getResponse.Error.Message)
}
fmt.Println("----- list content generation task -----")
// 列出符合特定条件的任务
listRequest := model.ListContentGenerationTasksRequest{
PageNum: volcengine.Int(1),
PageSize: volcengine.Int(10),
Filter: &model.ListContentGenerationTasksFilter{
Status: volcengine.String(model.StatusSucceeded),
//TaskIDs: volcengine.StringSlice([]string{"cgt-example-1", "cgt-example-2"}),
//Model: volcengine.String(modelEp),
},
}
listResponse, err := client.ListContentGenerationTasks(ctx, listRequest)
if err != nil {
fmt.Printf("failed to list content generation tasks: %v
", err)
}
fmt.Printf("ListContentGenerationTasks returned %v results
", listResponse.Total)
fmt.Println("----- delete content generation task -----")
// 通过任务 id 删除任务
deleteRequest := model.DeleteContentGenerationTaskRequest{ID: taskID}
err = client.DeleteContentGenerationTask(ctx, deleteRequest)
if err != nil {
fmt.Printf("delete content generation task error: %v
", err)
} else {
fmt.Println("successfully deleted task id: ", taskID)
}
}