Skip to content
Graph visualization
扫码添加客服

图生视频

更新时间
6 天前

TIP

由于任务是异步提交的,请在提交任务后,通过 查询任务状态 接口查询任务状态及结果。

对于图生视频场景,生成时间可能较长,根据选择的参数而异,预计在 4 分钟内,请耐心等待。

接口描述

提交图片生成视频任务。

请求

WARNING

为了让 DMXAPI 区分模型厂商,请在原 kling API 的 endpoint 基础上添加 /kling 路径,组合后的请求地址如下所示。

  • 请求方式: POST

  • 请求地址: https://{api_url}/kling/v1/videos/image2video

请求参数

TIP

通过合理使用尾帧控制,可以创建更有预见性和控制力的视频生成效果,特别适合需要明确起止状态的视频动画制作。

字段类型必填默认值描述
model_namestring可选kling-v1模型名称。枚举值:kling-v1, kling-v1-5, kling-v1-6
imagestring必须参考图像。支持图片Base64编码或URL,格式支持.jpg/.jpeg/.png,文件大小≤10MB,分辨率≥300*300px,宽高比在1:2.5~2.5:1之间
image_tailstring可选参考图像尾帧控制。格式要求同image。与image至少二选一
promptstring可选正向文本提示词。不超过2500个字符
negative_promptstring可选负向文本提示词。不超过2500个字符
cfg_scalefloat可选0.5生成视频的自由度。取值范围[0, 1],值越大与提示词相关性越强
modestring可选std生成视频模式。枚举值:std(标准模式),pro(专家模式)
static_maskstring可选静态笔刷涂抹区域。格式要求同image,长宽比须与输入图片相同
dynamic_masksarray可选动态笔刷配置列表。最多6组
dynamic_masks.maskstring可选动态笔刷涂抹区域。格式要求同image,长宽比须与输入图片相同
dynamic_masks.trajectoriesarray可选运动轨迹坐标序列。5s视频坐标数范围[2,77]
dynamic_masks.trajectories.xint可选轨迹点横坐标(以图片左下角为原点)
dynamic_masks.trajectories.yint可选轨迹点纵坐标(以图片左下角为原点)
camera_controlobject可选控制摄像机运动的协议
camera_control.typestring可选预定义运镜类型。枚举值:simple, down_back, forward_up, right_turn_forward, left_turn_forward
camera_control.configobject可选摄像机运动配置。type为simple时必填
camera_control.config.horizontalfloat可选水平运镜。范围[-10,10],负左正右
camera_control.config.verticalfloat可选垂直运镜。范围[-10,10],负下正上
camera_control.config.panfloat可选水平摇镜。范围[-10,10],负左正右
camera_control.config.tiltfloat可选垂直摇镜。范围[-10,10],负下正上
camera_control.config.rollfloat可选旋转运镜。范围[-10,10],负逆时针正顺时针
camera_control.config.zoomfloat可选变焦。范围[-10,10],负拉远正拉近
durationstring可选5生成视频时长(秒)。枚举值:5,10
callback_urlstring可选任务结果回调通知地址
external_task_idstring可选自定义任务ID。单用户下需唯一

代码示例

深色背景为可以修改的参数,非必选参数已经注释,可以按照自己的需求启用。

py
import http.client
import json
import base64

# 配置全局变量
API_URL = "www.dmxapi.cn"  # API 节点
DMX_API_TOKEN = "sk-XXXXXXXXXXXXX"  # 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_image_generate_video():
    """调用 Kling AI 的视频生成API,提交一个视频生成任务
    
    返回值:
        task_id: 生成任务的唯一标识符,用于后续查询任务结果
    """
    # 构建API请求体,包含所有视频生成参数
    payload = json.dumps({
        # 基础参数
        "model_name": "kling-v1-6",  # 模型版本 kling-v1, kling-v1-5, kling-v1-6
        "image": get_image_base64("/Users/dmxapi/Desktop/dmx.png"),  # 起始图片
        # "image_tail": get_image_base64("end.jpg"),  # 结束图片
        "prompt": "生成图中的几只动物走路的场景",  # 正向提示词
        # "negative_prompt": "模糊, 扭曲",  # 负向提示词
        
        # 生成控制参数
        # "cfg_scale": 0.5,  # [可选] 生成视频的自由度,取值范围:[0, 1]
        # "mode": "std",  # [可选] 生成模式:std(标准模式) 或 pro(专家模式)
        # "duration": "5",  # [可选] 视频时长(秒):5 或 10
        
        # 摄像机运动控制
        # "camera_control": {
            # "type": "forward_up",  # 预定义运镜类型
            # 如果使用 simple 类型,需要配置以下参数(六选一)
            # "config": {
            #     "horizontal": 0,  # 水平运镜 [-10, 10]
            #     "vertical": 0,    # 垂直运镜 [-10, 10]
            #     "pan": 5,         # 水平摇镜 [-10, 10]
            #     "tilt": 0,        # 垂直摇镜 [-10, 10]
            #     "roll": 0,        # 旋转运镜 [-10, 10]
            #     "zoom": 0         # 变焦 [-10, 10]
            # }
        # },
        
        # # 静态笔刷示例
        # "static_mask": get_image_base64("mask.png"),  # 静态区域遮罩
        
        # # 动态笔刷示例
        # "dynamic_masks": [{
        #     "mask": get_image_base64("mask.png"),  # 动态区域遮罩
        #     "trajectories": [
        #         {"x": 100, "y": 100},  # 起始点
        #         {"x": 150, "y": 200},  # 中间点
        #         {"x": 200, "y": 300}   # 结束点
        #     ]
        # }],
        
        # # 任务控制
        # "callback_url": "https://your-server.com/webhook",  # 回调地址
        # "external_task_id": "custom_task_001"  # 自定义任务ID
    })
    
    # 构建请求头,包含认证信息和内容类型
    headers = {
        'Authorization': f'Bearer {DMX_API_TOKEN}',  # 使用Bearer令牌认证方式
        'Content-Type': 'application/json'  # 指定请求体格式为JSON
    }
    
    # 发送POST请求,路径为视频生成API端点
    conn.request("POST", "/kling/v1/videos/image2video", 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_image_generate_video())

响应参数示例

业务码的含义请参考 业务码

{
	'code': 0, // 业务码 0 表示成功
	'message': 'SUCCEED', // 消息
	'request_id': 'CjhDaWgU7GAAAAAAAb1QfA', // 请求ID
	'data': {
		'task_id': 'CjhDaWgU7GAAAAAAAb1QfA', // 任务ID
		'task_status': 'submitted', // 任务状态
		'created_at': 1746771840640, // 创建时间
		'updated_at': 1746771840640 // 更新时间
	}
}