环境准备
本文介绍如何使用 C# 调用火山引擎豆包 AI 模型(Doubao-Seedance-1.0-pro)实现基于首尾帧的视频生成功能。调用 API 前需要注册火山引擎帐号并获得 API 开发密钥。
选择火山方舟 -> API Key 管理 -> 创建 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 |
| 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 = "720p", string rt = "16:9", 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;
}


