启动数字人智能直播任务
功能介绍
该接口用于启动数字人智能直播任务。
调用方法
请参见如何调用API。
URI
POST /v1/{project_id}/smart-live-rooms/{room_id}/smart-live-jobs
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方法请参考获取项目ID。 |
room_id |
是 |
String |
剧本ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
用户Token。使用Token鉴权方式时必选。 通过调用IAM服务获取用户Token接口获取。 响应消息头中X-Subject-Token的值。 |
Authorization |
否 |
String |
使用AK/SK方式认证时必选,携带的鉴权信息。 |
X-Sdk-Date |
否 |
String |
使用AK/SK方式认证时必选,请求的发生时间。 格式为(YYYYMMDD'T'HHMMSS'Z')。 |
X-Project-Id |
否 |
String |
使用AK/SK方式认证时必选,携带项目ID信息。 |
X-App-UserId |
否 |
String |
第三方用户ID。不允许输入中文。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
video_config |
否 |
VideoConfig object |
视频输出配置。 |
play_policy |
否 |
PlayPolicy object |
剧本播放策略 |
output_urls |
否 |
Array of strings |
参数解释: RTMP视频推流第三方直播平台地址。
说明:
直播过程中刷新地址,需要调用COMMAND命令REFRESH_OUTPUT_URL。 约束限制: 不涉及 取值范围: 当前仅支持一条RTMP出流地址。 默认取值: 不涉及。 |
stream_keys |
否 |
Array of strings |
参数解释: RTMP视频推流第三方直播平台流密钥,与推流地址对应。
说明:
直播过程中刷新地址,需要调用COMMAND命令REFRESH_OUTPUT_URL。 约束限制: 不涉及 取值范围: 当前仅支持一条RTMP出流地址。 默认取值: 不涉及。 |
interaction_callback_url |
否 |
String |
参数解释: 互动回调URL,含鉴权信息。 互动规则trigger.reply_mode配置为CALLBACK时填写 约束限制: 不涉及 取值范围: 字符长度0-2048位 默认取值: 不涉及。 |
live_event_callback_config |
否 |
LiveEventCallBackConfig object |
直播事件HTTPS回调通知配置 |
rtc_callback_config |
否 |
RTCLiveEventCallBackConfig object |
RTC回调事件配置。兼容处理,未携带配置则默认订阅LIVE_PROGRESS |
view_mode |
否 |
String |
参数解释: 横竖屏类型。 约束限制: 用户无需填写,通过video_config中分辨率判断 取值范围:
默认取值: VERTICAL |
co_streamer_config |
否 |
CoStreamerConfig object |
助播配置 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
clip_mode |
否 |
String |
参数解释: 输出视频的剪辑方式。 约束限制: 不涉及。 取值范围:
默认取值: RESIZE |
codec |
是 |
String |
参数解释: 视频编码格式及视频文件格式。 约束限制: 仅分身数字人视频制作支持VP8编码。 取值范围:
默认取值: 不涉及 |
bitrate |
是 |
Integer |
参数解释: 输出平均码率。单位:kbps。 约束限制:
默认取值: 不涉及 取值范围: 40-30000 |
width |
是 |
Integer |
参数解释: 视频宽度。单位:像素。 约束限制:
默认取值: 不涉及 取值范围: 0-3840 |
height |
是 |
Integer |
参数解释: 视频高度。 单位:像素。 约束限制:
默认取值: 不涉及 取值范围: 0-3840 |
frame_rate |
否 |
String |
参数解释: 帧率。单位:FPS。 约束限制: 分身数字人视频固定25FPS。 默认取值: 25 |
is_subtitle_enable |
否 |
Boolean |
参数解释: 输出的视频是否带字幕。 约束限制: 分身数字人直播暂时不支持字幕。 取值范围:
默认取值: false |
subtitle_config |
否 |
SubtitleConfig object |
字幕配置。 |
dx |
否 |
Integer |
参数解释: 裁剪视频左上角像素点横坐标。
说明:
以模特分辨率为画布大小,比如1920*1080分辨率的模特,dx最小值是0,最大值是1920。 约束限制: clip_mode= CROP时生效。 默认取值: 不涉及 取值范围: -1920-3840 |
dy |
否 |
Integer |
参数解释: 裁剪视频左上角像素点纵坐标。
说明:
以模特分辨率为画布大小,比如1920*1080分辨率的模特,dy最小值是0,最大值是1080 约束限制: clip_mode= CROP时生效。 默认取值: 不涉及 取值范围: -1920-3840 |
is_enable_super_resolution |
否 |
Boolean |
参数解释: 视频是否开启超分。 约束限制: 仅分身数字人视频制作支持。 取值范围
默认取值: false |
is_end_at_first_frame |
否 |
Boolean |
参数解释: 视频结束帧是否跟起始帧相同。需要多个数字人视频无缝拼接时设置成true。 约束限制: 仅分身数字人视频制作支持。 取值范围
默认取值: false |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
dx |
否 |
Integer |
参数解释: 字幕框左下角像素点坐标。 约束限制: 不涉及。 默认取值: 不涉及。 取值范围: 0-1920 |
dy |
否 |
Integer |
参数解释: 字幕框左下角像素点坐标。 约束限制: 不涉及。 默认取值: 不涉及。 取值范围: 0-1920 |
font_name |
否 |
String |
参数解释: 字体。当前支持的字体请参考服务支持的字体 约束限制: 不涉及。 取值范围: 字符长度0-64位 默认取值: HarmonyOS_Sans_SC_Black |
font_size |
否 |
Integer |
参数解释: 字体大小。接口的取值范围为0-120,实际业务使用的取值范围要求为24-120,请以业务实际使用要求为准。 约束限制: 不涉及。 取值范围: 0-120 默认取值: 54 |
h |
否 |
Integer |
参数解释: 字幕框高度。 约束限制: 参数h用于方便前端计算字幕框左上角坐标,后台不使用该参数。 取值范围: 0-1920 |
w |
否 |
Integer |
参数解释: 字幕框宽度。 约束限制:
取值范围: 0-1920 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
repeat_count |
否 |
Integer |
参数解释: 剧本重复播放次数。
约束限制: 不涉及。 取值范围: -1-100 默认取值: 0 |
auto_play_script |
否 |
Boolean |
参数解释: 是否自动播放剧本。 约束限制: 不涉及。 取值范围:
默认取值: true |
play_mode |
否 |
String |
参数解释: 驱动方式。 约束限制: 不涉及。 取值范围:
默认取值: TEXT |
random_play_mode |
否 |
String |
参数解释: 随机播报模式。 约束限制: 从第二轮播报开始随机。 取值范围:
默认取值: SCRIPT_ITEM |
need_independent_capture_client |
否 |
Boolean |
参数解释: 是否需要独立采集端。用于客户端播放与命令分离场景。 约束限制: 不涉及。 取值范围:
默认取值: false |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
live_event_type_callback_url |
否 |
String |
参数解释: 直播事件回调地址,为https地址。 约束限制: 不涉及。 取值范围: 字符长度0-2048位。 默认取值: 不涉及。 |
auth_type |
否 |
String |
参数解释: 认证类型。 约束限制: 不涉及。 取值范围:
默认取值: NONE |
key |
否 |
String |
参数解释: 密钥Key。 约束限制: 不涉及。 取值范围: 字符长度0-32位。 默认取值: 不涉及。 |
callback_event_type |
否 |
Array of strings |
参数解释: 回调的直播事件类型列表。 约束限制: 不涉及。 取值范围: 当前仅支持如下取值:
回调事件结构体定义:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
rtc_callback_event_type |
否 |
Array of strings |
RTC回调的直播事件类型列表。 当前仅支持如下取值:
回调事件结构体定义:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
voice_config |
否 |
VoiceConfig object |
语音配置参数。 |
streamer_action |
否 |
String |
参数解释: 助播出声时主播行为设置。 约束限制: 不涉及 取值范围:
默认取值: 不涉及。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
voice_asset_id |
是 |
String |
参数解释: 音色资产ID,可以从资产库中查询。 约束限制: 不涉及。 取值范围: 字符长度1-256位。 默认取值: 不涉及。 |
speed |
否 |
Integer |
参数解释: 语速。50表示0.5倍语速,100表示正常语速,200表示2倍语速。 当取值为“100”时,表示一个成年人的正常语速,约为250字/分钟。 约束限制: 不涉及。 取值范围: 50-200 默认取值: 100 |
pitch |
否 |
Integer |
参数解释: 音高。 约束限制: 不涉及。 取值范围: 50-200 默认取值: 100 |
volume |
否 |
Integer |
参数解释: 音量。 约束限制: 不涉及。 取值范围: 90-240 默认取值: 140 |
响应参数
状态码: 202
参数 |
参数类型 |
描述 |
---|---|---|
X-Request-Id |
String |
请求ID。 |
参数 |
参数类型 |
描述 |
---|---|---|
job_id |
String |
直播任务ID。 |
rtc_room_info |
RTCRoomInfoList object |
RTC房间信息。 |
live_event_report_url |
String |
直播事件上报地址。用户将自行获取的直播间事件上报到此地址,用于触发智能互动,自动回复话术。 |
live_event_callback_config |
LiveEventCallBackConfig object |
直播事件HTTPS回调通知配置 |
live_warning_info |
Array of LiveWarningItem objects |
开播风险告警列表。 |
参数 |
参数类型 |
描述 |
---|---|---|
app_id |
String |
RTC应用ID。 |
room_id |
String |
RTC房间ID。 |
users |
Array of RTCUserInfo objects |
加入RTC房间用户信息。 |
参数 |
参数类型 |
描述 |
---|---|---|
user_type |
String |
用户类型。
|
user_id |
String |
RTC用户ID。 |
signature |
String |
RTC鉴权token。 |
ctime |
Long |
有效期。时间戳,单位:秒。 取值范围: 0-4294967295 |
参数 |
参数类型 |
描述 |
---|---|---|
live_event_type_callback_url |
String |
参数解释: 直播事件回调地址,为https地址。 约束限制: 不涉及。 取值范围: 字符长度0-2048位。 默认取值: 不涉及。 |
auth_type |
String |
参数解释: 认证类型。 约束限制: 不涉及。 取值范围:
默认取值: NONE |
key |
String |
参数解释: 密钥Key。 约束限制: 不涉及。 取值范围: 字符长度0-32位。 默认取值: 不涉及。 |
callback_event_type |
Array of strings |
参数解释: 回调的直播事件类型列表。 约束限制: 不涉及。 取值范围: 当前仅支持如下取值:
回调事件结构体定义:
|
参数 |
参数类型 |
描述 |
---|---|---|
warning_type |
String |
告警类型。
|
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码。 |
error_msg |
String |
错误描述。 |
状态码: 401
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码。 |
error_msg |
String |
错误描述。 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码。 |
error_msg |
String |
错误描述。 |
请求示例
POST https://{endpoint}/v1/70b76xxxxxx34253880af501cdxxxxxx/smart-live-rooms/24bad716-87b1-45e5-8912-6102f7693265/smart-live-jobs { "output_urls" : [ "rtmp://vfxpush.hwcloudvr.cn/live/lysa" ] }
响应示例
状态码: 202
成功。
{ "job_id" : "26f06524-4f75-4b3a-a853-b649a21aaf66" }
状态码: 400
{ "error_code" : "MSS.00000003", "error_msg" : "Invalid parameter" }
状态码: 401
{ "error_code" : "MSS.00000001", "error_msg" : "Unauthorized" }
状态码: 500
{ "error_code" : "MSS.00000004", "error_msg" : "Internal Error" }
SDK代码示例
SDK代码示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.metastudio.v1.region.MetaStudioRegion; import com.huaweicloud.sdk.metastudio.v1.*; import com.huaweicloud.sdk.metastudio.v1.model.*; import java.util.List; import java.util.ArrayList; public class StartSmartLiveSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); MetaStudioClient client = MetaStudioClient.newBuilder() .withCredential(auth) .withRegion(MetaStudioRegion.valueOf("<YOUR REGION>")) .build(); StartSmartLiveRequest request = new StartSmartLiveRequest(); request.withRoomId("{room_id}"); StartSmartLiveReq body = new StartSmartLiveReq(); List<String> listbodyOutputUrls = new ArrayList<>(); listbodyOutputUrls.add("rtmp://vfxpush.hwcloudvr.cn/live/lysa"); body.withOutputUrls(listbodyOutputUrls); request.withBody(body); try { StartSmartLiveResponse response = client.startSmartLive(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkmetastudio.v1.region.metastudio_region import MetaStudioRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmetastudio.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = MetaStudioClient.new_builder() \ .with_credentials(credentials) \ .with_region(MetaStudioRegion.value_of("<YOUR REGION>")) \ .build() try: request = StartSmartLiveRequest() request.room_id = "{room_id}" listOutputUrlsbody = [ "rtmp://vfxpush.hwcloudvr.cn/live/lysa" ] request.body = StartSmartLiveReq( output_urls=listOutputUrlsbody ) response = client.start_smart_live(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" metastudio "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/metastudio/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/metastudio/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/metastudio/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := metastudio.NewMetaStudioClient( metastudio.MetaStudioClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.StartSmartLiveRequest{} request.RoomId = "{room_id}" var listOutputUrlsbody = []string{ "rtmp://vfxpush.hwcloudvr.cn/live/lysa", } request.Body = &model.StartSmartLiveReq{ OutputUrls: &listOutputUrlsbody, } response, err := client.StartSmartLive(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
202 |
成功。 |
400 |
请求传参异常,包含错误码及对应描述。 |
401 |
未鉴权或鉴权失败。 |
500 |
内部服务错误。 |
错误码
请参见错误码。