Skip to content
Graph visualization
扫码添加客服

文生视频

更新时间
6 天前

TIP

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

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

接口描述

提交文字生成视频任务。

请求

WARNING

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

  • 请求方式: POST

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

请求参数

参数名类型必填默认值描述
model_namestring可选kling-v1模型名称,枚举值:kling-v1, kling-v1-6
promptstring必填正向文本提示词,不能超过2500个字符
negative_promptstring可选负向文本提示词,不能超过2500个字符
cfg_scalefloat可选0.5生成视频的自由度;值越大,模型自由度越小,与提示词相关性越强。取值范围:[0, 1]
modestring可选std生成视频的模式。枚举值:
- std:标准模式,基础模式,性价比高
- pro:专家模式(高品质),高表现模式,生成视频质量更佳
aspect_ratiostring可选16:9生成视频的画面纵横比(宽:高)。枚举值:16:9, 9:16, 1:1
durationstring可选5生成视频时长,单位为秒。枚举值:5, 10
callback_urlstring可选任务结果回调通知地址,服务器会在任务状态变更时主动通知
external_task_idstring可选自定义任务ID,不会覆盖系统生成的任务ID,但支持通过该ID查询任务,需保证单用户下唯一性

摄像机控制参数

参数名类型必填默认值描述
camera_controlobject可选控制摄像机运动的协议(如未指定,模型将根据输入内容智能匹配)
camera_control.typestring可选预定义的运镜类型,枚举值:
- simple:简单运镜,此类型下可在config中六选一进行运镜
- down_back:镜头下压并后退 ➡️ 下移拉远
- forward_up:镜头前进并上仰 ➡️ 推进上移
- right_turn_forward:先右旋转后前进 ➡️ 右旋推进
- left_turn_forward:先左旋并前进 ➡️ 左旋推进
camera_control.configobject可选*包含六个字段的对象,用于指定摄像机在不同方向上的运动。当运镜类型为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],负值表示焦距变长、视野变小,正值表示焦距变短、视野变大

注意:在 camera_control.config 中,六个参数只能择一使用,即只能有一个参数不为0,其余参数必须为0。

代码示例

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

py
import http.client
import json

# 配置全局变量
API_URL = "www.dmxapi.cn"  # API 节点
DMX_API_TOKEN = "sk-XXXXXXXXXXXXXX"  # API 密钥

# 创建HTTP连接对象,用于后续所有API请求
conn = http.client.HTTPSConnection(API_URL)

def kling_text_generate_video():
    """调用 Kling AI 的视频生成API,提交一个视频生成任务
    
    返回值:
        task_id: 生成任务的唯一标识符,用于后续查询任务结果
    """
    # 构建API请求体,包含所有视频生成参数
    payload = json.dumps({
        # 基础参数
        "model_name": "kling-v1-6",  # [可选] 模型名称,可选 kling-v1 或 kling-v1-6
        "prompt": "一只可爱的卡通海豚,在海中游泳",  # [必填] 正向文本提示词
        # "negative_prompt": "模糊, 扭曲",  # [可选] 负向文本提示词
        
        # 生成控制参数
        # "cfg_scale": 0.5,  # [可选] 生成视频的自由度,取值范围:[0, 1]
        # "mode": "std",  # [可选] 生成模式:std(标准模式) 或 pro(专家模式)
        # "aspect_ratio": "16:9",  # [可选] 视频比例:16:9, 9:16, 1:1
        # "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]
            # }
        # },
        
        # 任务控制参数
        # "callback_url": "",  # [可选] 回调地址
        # "external_task_id": ""  # [可选] 自定义任务ID
    })
    
    # 构建请求头,包含认证信息和内容类型
    headers = {
        'Authorization': f'Bearer {DMX_API_TOKEN}',  # 使用Bearer令牌认证方式
        'Content-Type': 'application/json'  # 指定请求体格式为JSON
    }
    
    # 发送POST请求,路径为视频生成API端点
    conn.request("POST", "/kling/v1/videos/text2video", 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_text_generate_video())

响应参数示例

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

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