Skip to content
Graph visualization
扫码添加客服

视频特效

更新时间
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_scenestring必须场景名称,枚举值:花花世界bloombloom、魔力转圈圈dizzydizzy、快来惹毛我fuzzyfuzzy、捏捏乐squish、万物膨胀expansion
inputobject必须支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同,具体如「input 场景参数」所示
callback_urlstring可选本次任务结果回调通知地址,如果配置,服务端会在任务状态发生变更时主动通知
external_task_idstring可选用户自定义任务ID,传入不会覆盖系统生成的任务ID,但支持通过该ID进行任务查询

input 场景参数

参数名类型必填默认值描述
inputobject必须支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同
input.model_namestring必须模型名称 枚举值:kling-v1-6
input.imagestring必须图片url或者base64形式图片,图片文件大小不能超过10MB,图片分辨率不小于300*300px,图片宽高比要在1:2.5 ~ 2.5:1之间
input.durationstring必须视频时长秒,枚举值: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_scenestring必须场景名称,枚举值:拥抱hug、亲吻kiss、比心heart_gesture
inputobject必须支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同,具体如「input 场景参数」所示
callback_urlstring可选本次任务结果回调通知地址,如果配置,服务端会在任务状态发生变更时主动通知
external_task_idstring可选用户自定义任务ID,传入不会覆盖系统生成的任务ID,但支持通过该ID进行任务查询

input 场景参数

参数名类型必填默认值描述
inputobject必须支持不同任务输入的结构体,根据scene不同,结构体里传的字段不同
input.model_namestring必须kling-v1模型名称 枚举值:kling-v1, kling-v1-5, kling-v1-6
input.modestring可选std模型模式 枚举值:stdpro
input.imagesArray[string]必须数组的长度必须是2,上传的第一张图在合照的左边,上传的第二张图在合照的右边(该服务包含合照功能),图片文件大小不能超过10MB,图片分辨率不小于300*300px,图片宽高比要在1:2.5 ~ 2.5:1之间
input.durationstring必须视频时长秒,枚举值: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())