视频特效
更新时间
6 天前
CAUTION
对于视频特效处理场景的 API 待接入,暂时不可用。
接口描述
视频特效是指根据图片进行特效的添加或者重绘。目前支持单图以及双人图的特效处理。
- 单图特效:花花世界
bloombloom
、魔力转圈圈dizzydizzy
、快来惹毛我fuzzyfuzzy
、捏捏乐squish
、万物膨胀expansion
- 双人互动特效: 3款,拥抱
hug
、亲吻kiss
、比心heart_gesture
请求
WARNING
为了让 DMXAPI 区分模型厂商,请在原 kling API 的 endpoint 基础上添加 /kling
路径,组合后的请求地址如下所示。
- 请求方式: POST
- 请求地址:
https://{api_url}/kling/v1/videos/effects
单图请求场景(待接入)
请求参数
参数名 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
effect_scene | string | 必须 | 无 | 场景名称,枚举值:花花世界bloombloom 、魔力转圈圈dizzydizzy 、快来惹毛我fuzzyfuzzy 、捏捏乐squish 、万物膨胀expansion |
input | object | 必须 | 无 | 支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同,具体如「input 场景参数」所示 |
callback_url | string | 可选 | 无 | 本次任务结果回调通知地址,如果配置,服务端会在任务状态发生变更时主动通知 |
external_task_id | string | 可选 | 无 | 用户自定义任务ID,传入不会覆盖系统生成的任务ID,但支持通过该ID进行任务查询 |
input 场景参数
参数名 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
input | object | 必须 | 空 | 支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同 |
input.model_name | string | 必须 | 无 | 模型名称 枚举值:kling-v1-6 |
input.image | string | 必须 | 无 | 图片url或者base64形式图片,图片文件大小不能超过10MB,图片分辨率不小于300*300px,图片宽高比要在1:2.5 ~ 2.5:1之间 |
input.duration | string | 必须 | 无 | 视频时长秒,枚举值:5 |
代码示例
py
import http.client
import json
import base64
# 配置全局变量
API_URL = "www.dmxapi.cn" # API 节点
DMX_API_TOKEN = "sk-XXXXXXXXXXXX" # API 密钥
# 创建HTTP连接对象,用于后续所有API请求
conn = http.client.HTTPSConnection(API_URL)
# 将图片转换为 base64 编码形式
def get_image_base64(image_path):
"""将图片转换为 base64 编码形式
输入参数:
image_path: 图片路径
返回参数:
base64 编码后的图片字符串
"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def kling_video_effects_single():
"""调用 Kling AI 的视频特效API,提交一个视频特效任务
返回值:
task_id: 生成任务的唯一标识符,用于后续查询任务结果
"""
# 构建API请求体,包含所有视频生成参数
payload = json.dumps({
"effect_scene": "expansion", # 场景名称:bloombloom, dizzydizzy, fuzzyfuzzy, squish, expansion
"input": {
"model_name": "kling-v1-6", # 模型名称
"image": "https://p2-kling.klingai.com/bs2/upload-ylab-stunt/c54e463c95816d959602f1f2541c62b2.png?x-kcdn-pid=112452", # 图片输入 base64 形式 get_image_base64("input.jpg") 或者图片 url,这里展示 url
"duration": "5" # 视频时长(秒)
},
# "callback_url": "https://your-server.com/webhook", # 回调通知地址
# "external_task_id": "custom_effect_001" # 自定义任务ID
})
# 构建请求头,包含认证信息和内容类型
headers = {
'Authorization': f'Bearer {DMX_API_TOKEN}', # 使用Bearer令牌认证方式
'Content-Type': 'application/json' # 指定请求体格式为JSON
}
# 发送POST请求,路径为视频生成API端点
conn.request("POST", "/kling/v1/videos/effects", payload, headers)
# 获取API响应并解析JSON数据
res = conn.getresponse()
json_data = json.loads(res.read().decode("utf-8"))
print(json_data)
# if json_data['code'] == 0:
# # 成功则返回提交的任务 id
# return json_data['data']['task_id']
# else:
# # 失败则返回错误信息
# return json_data['message']
if __name__ == "__main__":
# 提交视频特效任务
print(kling_video_effects_single())
两人互动场景(待接入)
请求参数
参数名 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
effect_scene | string | 必须 | 无 | 场景名称,枚举值:拥抱hug 、亲吻kiss 、比心heart_gesture |
input | object | 必须 | 无 | 支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同,具体如「input 场景参数」所示 |
callback_url | string | 可选 | 无 | 本次任务结果回调通知地址,如果配置,服务端会在任务状态发生变更时主动通知 |
external_task_id | string | 可选 | 无 | 用户自定义任务ID,传入不会覆盖系统生成的任务ID,但支持通过该ID进行任务查询 |
input 场景参数
参数名 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
input | object | 必须 | 空 | 支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同 |
input.model_name | string | 必须 | kling-v1 | 模型名称 枚举值:kling-v1 , kling-v1-5 , kling-v1-6 |
input.mode | string | 可选 | std | 模型模式 枚举值:std ,pro |
input.images | Array[string] | 必须 | 无 | 数组的长度必须是2,上传的第一张图在合照的左边,上传的第二张图在合照的右边(该服务包含合照功能),图片文件大小不能超过10MB,图片分辨率不小于300*300px,图片宽高比要在1:2.5 ~ 2.5:1之间 |
input.duration | string | 必须 | 无 | 视频时长秒,枚举值:5,10 |
代码示例
py
import http.client
import json
import base64
# 配置全局变量
API_URL = "www.dmxapi.cn" # API 节点
DMX_API_TOKEN = "sk-XXXXXX" # API 密钥
# 创建HTTP连接对象,用于后续所有API请求
conn = http.client.HTTPSConnection(API_URL)
# 将图片转换为 base64 编码形式
def get_image_base64(image_path):
"""将图片转换为 base64 编码形式
输入参数:
image_path: 图片路径
返回参数:
base64 编码后的图片字符串
"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def kling_video_effects_single():
"""调用 Kling AI 的视频特效API,提交一个视频特效任务
返回值:
task_id: 生成任务的唯一标识符,用于后续查询任务结果
"""
# 构建API请求体,包含所有视频生成参数
payload = json.dumps({
"effect_scene": "hug",
"input": {
"model_name": "kling-v1-6", # 模型名称 枚举值:`kling-v1`, `kling-v1-5`, `kling-v1-6`
"mode": "std", # 模式 枚举值:`std`, `pro`
"images": [ # 图片 url 数组 或者 base64 数组 get_image_base64("input.jpg")
"https://p2-kling.klingai.com/bs2/upload-ylab-stunt/c54e463c95816d959602f1f2541c62b2.png?x-kcdn-pid=112452",
"https://p2-kling.klingai.com/bs2/upload-ylab-stunt/5eef15e03a70e1fa80732808a2f50f3f.png?x-kcdn-pid=112452"
],
"duration": "5" # 视频时长 枚举值:5, 10
},
# "callback_url": "https://your-server.com/webhook", # 回调通知地址
# "external_task_id": "custom_effect_001" # 自定义任务ID
})
# 构建请求头,包含认证信息和内容类型
headers = {
'Authorization': f'Bearer {DMX_API_TOKEN}', # 使用Bearer令牌认证方式
'Content-Type': 'application/json' # 指定请求体格式为JSON
}
# 发送POST请求,路径为视频生成API端点
conn.request("POST", "/kling/v1/videos/effects", payload, headers)
# 获取API响应并解析JSON数据
res = conn.getresponse()
json_data = json.loads(res.read().decode("utf-8"))
print(json_data)
# if json_data['code'] == 0:
# # 成功则返回提交的任务 id
# return json_data['data']['task_id']
# else:
# # 失败则返回错误信息
# return json_data['message']
if __name__ == "__main__":
# 提交视频特效任务
print(kling_video_effects_single())