简介
火山引擎方舟平台推出豆包视频生成模型 Doubao-Seedance-1.0-pro,支持首尾帧模式。该模式提供首图和尾图两张照片,结合 AI 对话描述生成结果视频。本文主要讲述如何使用 C# 调用平台 API 实现视频生成功能。
前置准备
调用 API 前需要注册账号并获得 API 开发密钥。在控制台创建 API Key 并编辑权限以保证能够调用对应功能的 API。
创建视频生成任务
模型生成视频属于异步操作,首先向模型申请创建视频生成任务。Doubao_CreateVideo 方法提供了创建视频任务的能力,参数说明如下:
| 序号 | 参数名 | 类型 | 说明 |
|---|---|---|---|
| 1 | say | string | 对话描述内容 |
| 2 | ApiKey | string | 平台申请的 API 访问令牌 |
| 3 | first_ImageUrlOrBase64 | string | 首帧图片的可访问 URL 或 Base64 编码 |
| 4 | last_ImageUrlOrBase64 | string | 尾帧图片的可访问 URL 或 Base64 编码 |
| 5 | rs | string | 指定生成视频的分辨率,默认值为 720p(枚举值包括:480p, 720p, 1080p) |
| 6 | rt | string | 指定生成视频的宽高比,默认值为 16:9(枚举值包括:16:9, 4:3, 1:1, 3:4, 9:16, 21:9) |
| 7 | dur | int | 指定生成视频的时长,默认值为 5 秒,最长可选择为 12 秒 |
| 8 | fps | int | 指定生成视频的帧率,默认值为 24 |
| 9 | wm | bool | 指定生成的视频是否包含水印,默认值为 true |
| 10 | seed | int | 种子整数,用于控制生成内容的随机性,默认值为 11 |
| 11 | cf | bool | 是否固定摄像头,默认值为 false |
| 12 | model | string | 使用的模型 ID,默认值为 doubao-seedance-1-0-pro-250528 |
方法示例代码如下:
public void Doubao_CreateVideo(string say, string ApiKey, string first_ImageUrlOrBase64, string last_ImageUrlOrBase64, string rs = , rt = , dur = , fps = , wm = , seed = , cf = , model = )
{
para = .Format(, rs, rt, dur, fps, wm, seed, cf);
ApiUrl = ;
WebService ws = WebService();
[] headers = [];
headers[] = ;
headers[] = ;
headers[] = + ApiKey;
StringWriter sw = StringWriter();
(Newtonsoft.Json.JsonWriter writer = Newtonsoft.Json.JsonTextWriter(sw))
{
writer.Formatting = Newtonsoft.Json.Formatting.Indented;
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue(model);
writer.WritePropertyName();
writer.WriteStartArray();
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue();
writer.WritePropertyName();
writer.WriteValue(say + para);
writer.WriteEndObject();
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue();
writer.WritePropertyName();
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue(first_ImageUrlOrBase64);
writer.WriteEndObject();
writer.WritePropertyName();
writer.WriteValue();
writer.WriteEndObject();
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue();
writer.WritePropertyName();
writer.WriteStartObject();
writer.WritePropertyName();
writer.WriteValue(last_ImageUrlOrBase64);
writer.WriteEndObject();
writer.WritePropertyName();
writer.WriteValue();
writer.WriteEndObject();
writer.WriteEndArray();
writer.WriteEndObject();
writer.Flush();
}
sw.Close();
postData = sw.GetStringBuilder().ToString();
rs2 = ws.GetResponseResult(ApiUrl, Encoding.UTF8, , postData, headers);
ErrorMessage = ws.ErrorMessage;
ResultJson = rs2;
}


