tencentcloud-sdk-python 3.0.1200__py2.py3-none-any.whl → 3.0.1201__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tencentcloud/__init__.py +1 -1
- tencentcloud/aiart/v20221229/aiart_client.py +3 -1
- tencentcloud/apm/v20210622/models.py +12 -0
- tencentcloud/cdwdoris/v20211228/cdwdoris_client.py +437 -0
- tencentcloud/cdwdoris/v20211228/errorcodes.py +3 -0
- tencentcloud/cdwdoris/v20211228/models.py +4980 -1695
- tencentcloud/dlc/v20210125/dlc_client.py +1 -1
- tencentcloud/dlc/v20210125/models.py +42 -1
- tencentcloud/domain/v20180808/models.py +1 -1
- tencentcloud/ess/v20201111/ess_client.py +21 -3
- tencentcloud/ess/v20201111/models.py +4 -6
- tencentcloud/essbasic/v20210526/models.py +12 -12
- tencentcloud/faceid/v20180301/models.py +1 -1
- tencentcloud/lke/v20231130/models.py +816 -1
- tencentcloud/organization/v20210331/errorcodes.py +3 -0
- tencentcloud/trro/v20220325/models.py +251 -1
- tencentcloud/trtc/v20190722/models.py +1 -1
- tencentcloud/trtc/v20190722/trtc_client.py +13 -99
- tencentcloud/tsf/v20180326/models.py +12 -12
- {tencentcloud_sdk_python-3.0.1200.dist-info → tencentcloud_sdk_python-3.0.1201.dist-info}/METADATA +1 -1
- {tencentcloud_sdk_python-3.0.1200.dist-info → tencentcloud_sdk_python-3.0.1201.dist-info}/RECORD +24 -24
- {tencentcloud_sdk_python-3.0.1200.dist-info → tencentcloud_sdk_python-3.0.1201.dist-info}/LICENSE +0 -0
- {tencentcloud_sdk_python-3.0.1200.dist-info → tencentcloud_sdk_python-3.0.1201.dist-info}/WHEEL +0 -0
- {tencentcloud_sdk_python-3.0.1200.dist-info → tencentcloud_sdk_python-3.0.1201.dist-info}/top_level.txt +0 -0
@@ -583,3 +583,6 @@ UNSUPPORTEDOPERATION_PAYEREXISTACCOUNTLEVELDISCOUNTINHERIT = 'UnsupportedOperati
|
|
583
583
|
|
584
584
|
# 存在二级经销商子客,不支持代付费。
|
585
585
|
UNSUPPORTEDOPERATION_SECONDARYDISTRIBUTORSUBCLIENTEXISTED = 'UnsupportedOperation.SecondaryDistributorSubClientExisted'
|
586
|
+
|
587
|
+
# 不支持共享给其他组织成员。
|
588
|
+
UNSUPPORTEDOPERATION_SHARINGTOOTHERORGANIZATIONMEMBER = 'UnsupportedOperation.SharingToOtherOrganizationMember'
|
@@ -682,12 +682,15 @@ class DescribeDeviceListRequest(AbstractModel):
|
|
682
682
|
:type PageSize: int
|
683
683
|
:param _PageNumber: 当前页码,不填默认为1(首页)
|
684
684
|
:type PageNumber: int
|
685
|
+
:param _DeviceStatus: 设备状态筛选,不填默认为不过滤。取值:["ready","connected","online"],online代表ready或connected
|
686
|
+
:type DeviceStatus: str
|
685
687
|
"""
|
686
688
|
self._ProjectId = None
|
687
689
|
self._DeviceType = None
|
688
690
|
self._SearchWords = None
|
689
691
|
self._PageSize = None
|
690
692
|
self._PageNumber = None
|
693
|
+
self._DeviceStatus = None
|
691
694
|
|
692
695
|
@property
|
693
696
|
def ProjectId(self):
|
@@ -729,6 +732,14 @@ class DescribeDeviceListRequest(AbstractModel):
|
|
729
732
|
def PageNumber(self, PageNumber):
|
730
733
|
self._PageNumber = PageNumber
|
731
734
|
|
735
|
+
@property
|
736
|
+
def DeviceStatus(self):
|
737
|
+
return self._DeviceStatus
|
738
|
+
|
739
|
+
@DeviceStatus.setter
|
740
|
+
def DeviceStatus(self, DeviceStatus):
|
741
|
+
self._DeviceStatus = DeviceStatus
|
742
|
+
|
732
743
|
|
733
744
|
def _deserialize(self, params):
|
734
745
|
self._ProjectId = params.get("ProjectId")
|
@@ -736,6 +747,7 @@ class DescribeDeviceListRequest(AbstractModel):
|
|
736
747
|
self._SearchWords = params.get("SearchWords")
|
737
748
|
self._PageSize = params.get("PageSize")
|
738
749
|
self._PageNumber = params.get("PageNumber")
|
750
|
+
self._DeviceStatus = params.get("DeviceStatus")
|
739
751
|
memeber_set = set(params.keys())
|
740
752
|
for name, value in vars(self).items():
|
741
753
|
property_name = name[1:]
|
@@ -2962,6 +2974,105 @@ class ModifyProjectResponse(AbstractModel):
|
|
2962
2974
|
self._RequestId = params.get("RequestId")
|
2963
2975
|
|
2964
2976
|
|
2977
|
+
class MultiNet(AbstractModel):
|
2978
|
+
"""多网的网卡状态信息
|
2979
|
+
|
2980
|
+
"""
|
2981
|
+
|
2982
|
+
def __init__(self):
|
2983
|
+
r"""
|
2984
|
+
:param _NetId: 网卡序号
|
2985
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
2986
|
+
:type NetId: int
|
2987
|
+
:param _NetIp: 网卡IP
|
2988
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
2989
|
+
:type NetIp: str
|
2990
|
+
:param _Rtt: 时延,单位ms
|
2991
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
2992
|
+
:type Rtt: list of int
|
2993
|
+
:param _Lost: 丢包率,单位%
|
2994
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
2995
|
+
:type Lost: list of int
|
2996
|
+
:param _SendBps: 发送bps,单位kbps
|
2997
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
2998
|
+
:type SendBps: list of int
|
2999
|
+
:param _RecvBps: 接收bps,单位kbps
|
3000
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3001
|
+
:type RecvBps: list of int
|
3002
|
+
"""
|
3003
|
+
self._NetId = None
|
3004
|
+
self._NetIp = None
|
3005
|
+
self._Rtt = None
|
3006
|
+
self._Lost = None
|
3007
|
+
self._SendBps = None
|
3008
|
+
self._RecvBps = None
|
3009
|
+
|
3010
|
+
@property
|
3011
|
+
def NetId(self):
|
3012
|
+
return self._NetId
|
3013
|
+
|
3014
|
+
@NetId.setter
|
3015
|
+
def NetId(self, NetId):
|
3016
|
+
self._NetId = NetId
|
3017
|
+
|
3018
|
+
@property
|
3019
|
+
def NetIp(self):
|
3020
|
+
return self._NetIp
|
3021
|
+
|
3022
|
+
@NetIp.setter
|
3023
|
+
def NetIp(self, NetIp):
|
3024
|
+
self._NetIp = NetIp
|
3025
|
+
|
3026
|
+
@property
|
3027
|
+
def Rtt(self):
|
3028
|
+
return self._Rtt
|
3029
|
+
|
3030
|
+
@Rtt.setter
|
3031
|
+
def Rtt(self, Rtt):
|
3032
|
+
self._Rtt = Rtt
|
3033
|
+
|
3034
|
+
@property
|
3035
|
+
def Lost(self):
|
3036
|
+
return self._Lost
|
3037
|
+
|
3038
|
+
@Lost.setter
|
3039
|
+
def Lost(self, Lost):
|
3040
|
+
self._Lost = Lost
|
3041
|
+
|
3042
|
+
@property
|
3043
|
+
def SendBps(self):
|
3044
|
+
return self._SendBps
|
3045
|
+
|
3046
|
+
@SendBps.setter
|
3047
|
+
def SendBps(self, SendBps):
|
3048
|
+
self._SendBps = SendBps
|
3049
|
+
|
3050
|
+
@property
|
3051
|
+
def RecvBps(self):
|
3052
|
+
return self._RecvBps
|
3053
|
+
|
3054
|
+
@RecvBps.setter
|
3055
|
+
def RecvBps(self, RecvBps):
|
3056
|
+
self._RecvBps = RecvBps
|
3057
|
+
|
3058
|
+
|
3059
|
+
def _deserialize(self, params):
|
3060
|
+
self._NetId = params.get("NetId")
|
3061
|
+
self._NetIp = params.get("NetIp")
|
3062
|
+
self._Rtt = params.get("Rtt")
|
3063
|
+
self._Lost = params.get("Lost")
|
3064
|
+
self._SendBps = params.get("SendBps")
|
3065
|
+
self._RecvBps = params.get("RecvBps")
|
3066
|
+
memeber_set = set(params.keys())
|
3067
|
+
for name, value in vars(self).items():
|
3068
|
+
property_name = name[1:]
|
3069
|
+
if property_name in memeber_set:
|
3070
|
+
memeber_set.remove(property_name)
|
3071
|
+
if len(memeber_set) > 0:
|
3072
|
+
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
|
3073
|
+
|
3074
|
+
|
3075
|
+
|
2965
3076
|
class PolicyInfo(AbstractModel):
|
2966
3077
|
"""权限信息
|
2967
3078
|
|
@@ -3237,7 +3348,7 @@ class SessionDeviceDetail(AbstractModel):
|
|
3237
3348
|
:param _DecodeCost: 解码耗时,单位:ms
|
3238
3349
|
注意:此字段可能返回 null,表示取不到有效值。
|
3239
3350
|
:type DecodeCost: list of int
|
3240
|
-
:param _RenderConst:
|
3351
|
+
:param _RenderConst: 【已废弃,使用RenderCost】
|
3241
3352
|
注意:此字段可能返回 null,表示取不到有效值。
|
3242
3353
|
:type RenderConst: list of int
|
3243
3354
|
:param _K100: 卡顿k100
|
@@ -3264,6 +3375,36 @@ class SessionDeviceDetail(AbstractModel):
|
|
3264
3375
|
:param _CaptureCost: 采集耗时,单位:ms
|
3265
3376
|
注意:此字段可能返回 null,表示取不到有效值。
|
3266
3377
|
:type CaptureCost: list of int
|
3378
|
+
:param _RenderCost: 渲染耗时,单位:ms
|
3379
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3380
|
+
:type RenderCost: list of int
|
3381
|
+
:param _ConfigWidth: 配置宽度
|
3382
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3383
|
+
:type ConfigWidth: int
|
3384
|
+
:param _ConfigHeight: 配置高度
|
3385
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3386
|
+
:type ConfigHeight: int
|
3387
|
+
:param _FrameDelta: 平均帧间隔
|
3388
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3389
|
+
:type FrameDelta: list of int
|
3390
|
+
:param _MaxFrameDelta: 最大帧间隔
|
3391
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3392
|
+
:type MaxFrameDelta: list of int
|
3393
|
+
:param _TotalBitrateEstimate: 总码率评估,单位:kbps
|
3394
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3395
|
+
:type TotalBitrateEstimate: list of int
|
3396
|
+
:param _Lag100Duration: 帧间隔大于100ms的卡顿时长
|
3397
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3398
|
+
:type Lag100Duration: list of int
|
3399
|
+
:param _Lag150Duration: 帧间隔大于150ms的卡顿时长
|
3400
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3401
|
+
:type Lag150Duration: list of int
|
3402
|
+
:param _MultiMode: 是否开启多网:0 单网,1 多网
|
3403
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3404
|
+
:type MultiMode: int
|
3405
|
+
:param _MultiNet: 多网卡信息
|
3406
|
+
注意:此字段可能返回 null,表示取不到有效值。
|
3407
|
+
:type MultiNet: list of MultiNet
|
3267
3408
|
"""
|
3268
3409
|
self._DeviceType = None
|
3269
3410
|
self._StartTime = None
|
@@ -3291,6 +3432,16 @@ class SessionDeviceDetail(AbstractModel):
|
|
3291
3432
|
self._Height = None
|
3292
3433
|
self._EncodeCost = None
|
3293
3434
|
self._CaptureCost = None
|
3435
|
+
self._RenderCost = None
|
3436
|
+
self._ConfigWidth = None
|
3437
|
+
self._ConfigHeight = None
|
3438
|
+
self._FrameDelta = None
|
3439
|
+
self._MaxFrameDelta = None
|
3440
|
+
self._TotalBitrateEstimate = None
|
3441
|
+
self._Lag100Duration = None
|
3442
|
+
self._Lag150Duration = None
|
3443
|
+
self._MultiMode = None
|
3444
|
+
self._MultiNet = None
|
3294
3445
|
|
3295
3446
|
@property
|
3296
3447
|
def DeviceType(self):
|
@@ -3430,10 +3581,14 @@ class SessionDeviceDetail(AbstractModel):
|
|
3430
3581
|
|
3431
3582
|
@property
|
3432
3583
|
def RenderConst(self):
|
3584
|
+
warnings.warn("parameter `RenderConst` is deprecated", DeprecationWarning)
|
3585
|
+
|
3433
3586
|
return self._RenderConst
|
3434
3587
|
|
3435
3588
|
@RenderConst.setter
|
3436
3589
|
def RenderConst(self, RenderConst):
|
3590
|
+
warnings.warn("parameter `RenderConst` is deprecated", DeprecationWarning)
|
3591
|
+
|
3437
3592
|
self._RenderConst = RenderConst
|
3438
3593
|
|
3439
3594
|
@property
|
@@ -3500,6 +3655,86 @@ class SessionDeviceDetail(AbstractModel):
|
|
3500
3655
|
def CaptureCost(self, CaptureCost):
|
3501
3656
|
self._CaptureCost = CaptureCost
|
3502
3657
|
|
3658
|
+
@property
|
3659
|
+
def RenderCost(self):
|
3660
|
+
return self._RenderCost
|
3661
|
+
|
3662
|
+
@RenderCost.setter
|
3663
|
+
def RenderCost(self, RenderCost):
|
3664
|
+
self._RenderCost = RenderCost
|
3665
|
+
|
3666
|
+
@property
|
3667
|
+
def ConfigWidth(self):
|
3668
|
+
return self._ConfigWidth
|
3669
|
+
|
3670
|
+
@ConfigWidth.setter
|
3671
|
+
def ConfigWidth(self, ConfigWidth):
|
3672
|
+
self._ConfigWidth = ConfigWidth
|
3673
|
+
|
3674
|
+
@property
|
3675
|
+
def ConfigHeight(self):
|
3676
|
+
return self._ConfigHeight
|
3677
|
+
|
3678
|
+
@ConfigHeight.setter
|
3679
|
+
def ConfigHeight(self, ConfigHeight):
|
3680
|
+
self._ConfigHeight = ConfigHeight
|
3681
|
+
|
3682
|
+
@property
|
3683
|
+
def FrameDelta(self):
|
3684
|
+
return self._FrameDelta
|
3685
|
+
|
3686
|
+
@FrameDelta.setter
|
3687
|
+
def FrameDelta(self, FrameDelta):
|
3688
|
+
self._FrameDelta = FrameDelta
|
3689
|
+
|
3690
|
+
@property
|
3691
|
+
def MaxFrameDelta(self):
|
3692
|
+
return self._MaxFrameDelta
|
3693
|
+
|
3694
|
+
@MaxFrameDelta.setter
|
3695
|
+
def MaxFrameDelta(self, MaxFrameDelta):
|
3696
|
+
self._MaxFrameDelta = MaxFrameDelta
|
3697
|
+
|
3698
|
+
@property
|
3699
|
+
def TotalBitrateEstimate(self):
|
3700
|
+
return self._TotalBitrateEstimate
|
3701
|
+
|
3702
|
+
@TotalBitrateEstimate.setter
|
3703
|
+
def TotalBitrateEstimate(self, TotalBitrateEstimate):
|
3704
|
+
self._TotalBitrateEstimate = TotalBitrateEstimate
|
3705
|
+
|
3706
|
+
@property
|
3707
|
+
def Lag100Duration(self):
|
3708
|
+
return self._Lag100Duration
|
3709
|
+
|
3710
|
+
@Lag100Duration.setter
|
3711
|
+
def Lag100Duration(self, Lag100Duration):
|
3712
|
+
self._Lag100Duration = Lag100Duration
|
3713
|
+
|
3714
|
+
@property
|
3715
|
+
def Lag150Duration(self):
|
3716
|
+
return self._Lag150Duration
|
3717
|
+
|
3718
|
+
@Lag150Duration.setter
|
3719
|
+
def Lag150Duration(self, Lag150Duration):
|
3720
|
+
self._Lag150Duration = Lag150Duration
|
3721
|
+
|
3722
|
+
@property
|
3723
|
+
def MultiMode(self):
|
3724
|
+
return self._MultiMode
|
3725
|
+
|
3726
|
+
@MultiMode.setter
|
3727
|
+
def MultiMode(self, MultiMode):
|
3728
|
+
self._MultiMode = MultiMode
|
3729
|
+
|
3730
|
+
@property
|
3731
|
+
def MultiNet(self):
|
3732
|
+
return self._MultiNet
|
3733
|
+
|
3734
|
+
@MultiNet.setter
|
3735
|
+
def MultiNet(self, MultiNet):
|
3736
|
+
self._MultiNet = MultiNet
|
3737
|
+
|
3503
3738
|
|
3504
3739
|
def _deserialize(self, params):
|
3505
3740
|
self._DeviceType = params.get("DeviceType")
|
@@ -3528,6 +3763,21 @@ class SessionDeviceDetail(AbstractModel):
|
|
3528
3763
|
self._Height = params.get("Height")
|
3529
3764
|
self._EncodeCost = params.get("EncodeCost")
|
3530
3765
|
self._CaptureCost = params.get("CaptureCost")
|
3766
|
+
self._RenderCost = params.get("RenderCost")
|
3767
|
+
self._ConfigWidth = params.get("ConfigWidth")
|
3768
|
+
self._ConfigHeight = params.get("ConfigHeight")
|
3769
|
+
self._FrameDelta = params.get("FrameDelta")
|
3770
|
+
self._MaxFrameDelta = params.get("MaxFrameDelta")
|
3771
|
+
self._TotalBitrateEstimate = params.get("TotalBitrateEstimate")
|
3772
|
+
self._Lag100Duration = params.get("Lag100Duration")
|
3773
|
+
self._Lag150Duration = params.get("Lag150Duration")
|
3774
|
+
self._MultiMode = params.get("MultiMode")
|
3775
|
+
if params.get("MultiNet") is not None:
|
3776
|
+
self._MultiNet = []
|
3777
|
+
for item in params.get("MultiNet"):
|
3778
|
+
obj = MultiNet()
|
3779
|
+
obj._deserialize(item)
|
3780
|
+
self._MultiNet.append(obj)
|
3531
3781
|
memeber_set = set(params.keys())
|
3532
3782
|
for name, value in vars(self).items():
|
3533
3783
|
property_name = name[1:]
|
@@ -11027,7 +11027,7 @@ class UpdatePublishCdnStreamRequest(AbstractModel):
|
|
11027
11027
|
:type SequenceNumber: int
|
11028
11028
|
:param _WithTranscoding: 是否转码,0表示无需转码,1表示需要转码。
|
11029
11029
|
:type WithTranscoding: int
|
11030
|
-
:param _AudioParams:
|
11030
|
+
:param _AudioParams: 更新相关参数,只支持更新参与混音的主播列表参数,不支持更新Codec、采样率、码率和声道数。不填表示不更新此参数。
|
11031
11031
|
:type AudioParams: :class:`tencentcloud.trtc.v20190722.models.McuAudioParams`
|
11032
11032
|
:param _VideoParams: 更新视频相关参数,转码时支持更新除编码类型之外的编码参数,视频布局参数,背景图片和背景颜色参数,水印参数。不填表示不更新此参数。
|
11033
11033
|
:type VideoParams: :class:`tencentcloud.trtc.v20190722.models.McuVideoParams`
|
@@ -1188,102 +1188,14 @@ class TrtcClient(AbstractClient):
|
|
1188
1188
|
|
1189
1189
|
|
1190
1190
|
def StartPublishCdnStream(self, request):
|
1191
|
-
"""
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
1、设置最终混流的画质和音质,包括视频分辨率、视频帧率、视频码率,和音频质量。
|
1200
|
-
2、设置每一路画面的布局位置,您只需要设置一次,后续您指定的混流用户进房上行音视频时,排版引擎会自动将该用户的画面混合到您指定的布局位置。同时您可以使用更新接口调整画面的布局位置。
|
1201
|
-
3、设置多个cdn转推的目的地址,一个转推任务最多可以同时设置10个cdn转推地址,如果您需要转推非腾讯云的cdn地址时,需要联系腾讯云开通能力。
|
1202
|
-
4、设置多个回推房间列表,一个转推任务最多可以同时将混流回推到10个TRTC房间。
|
1203
|
-
|
1204
|
-
目前已经支持如下几种布局模版,其中动态布局模版(悬浮模板、九宫格模板、屏幕分享模板)只支持单个TRTC房间,自定义模版支持混合多个TRTC房间内的音视频流。具体说明如下:
|
1205
|
-
1、悬浮模板:第一个进入房间的用户的视频画面会铺满整个屏幕,其他用户的视频画面从左下角依次水平排列,显示为小画面,最多4行,每行4个,小画面悬浮于大画面之上。最多支持1个大画面和15个小画面,如果用户只发送音频默认不占布局配置,也支持设置。每个子画面默认采用居中裁剪的方式进行渲染,也支持统一设置子画面的渲染方式。
|
1206
|
-
2、九宫格模板:所有用户的视频画面大小一致,平分整个屏幕,人数越多,每个画面的尺寸越小。最多支持16个画面,如果用户只发送音频,默认不占布局配置,也支持设置。每个子画面默认采用居中裁剪的方式进行渲染,也支持统一设置子画面的渲染方式。
|
1207
|
-
3、屏幕分享模板:适合视频会议和在线教育场景的布局,屏幕分享(或者主讲的摄像头)始终占据屏幕左侧的大画面位置,需要您明确设置占据大画面的混流用户信息。其他用户依次垂直排列于右侧,最多两列,每列最多8个小画面。最多支持1个大画面和15个小画面。若上行分辨率宽高比与画面输出宽高比不一致时,左侧大画面为了保持内容的完整性采用缩放方式处理,右侧小画面采用裁剪方式处理,也支持统一设置子画面的渲染方式。
|
1208
|
-
4、自定义布局模版:支持您主动根据业务需要设置布局位置,每个预设的布局位置支持具名设置(具名设置需要明确指定房间号和用户名)和不具名设置。当一个子画面具名设置时,该位置就为该用户预留,用户进房且上行音视频数据时会自动占据该位置,其它用户不会占据该位置。当预设的布局位置未具名时,排版引擎会根据进房间顺序自动填充,预设位置填满时,不再混合其它用户的画面和声音。每个子画面位置支持设置占位图(BackgroundImageUrl),当用户未进房或者只上行音频数据时,该位置画面可显示对应的占位图画面。
|
1209
|
-
|
1210
|
-
您可以控制台开通旁路转推回调功能实现转推cdn状态的事件监控,具体说明请参考官网文档:[旁路转推回调说明](https://cloud.tencent.com/document/product/647/88552)
|
1211
|
-
您使用转推api时根据使用特性可能会产生如下费用:
|
1212
|
-
MCU混流转码费用请参考文档:[云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446)
|
1213
|
-
转推非腾讯云CDN费用请参考文档:[云端转推计费说明](https://cloud.tencent.com/document/product/647/82155)
|
1214
|
-
|
1215
|
-
参数的使用说明:
|
1216
|
-
1、AgentParams:每个转推任务会拉起一个机器人用户进入TRTC房间进行拉流,您需要通过AgentParams.UserId参数进行设置,这个机器人id不能和房间中的普通用户id冲突,否则会导致转推任务由于机器人用户被踢出TRTC房间而异常结束,您可以通过增加特殊前缀的方式规避。您可以通过设置AgentParams.MaxIdleTime控制转推任务的自动结束,当设置此参数时,所有参与混流转推的主播持续离开TRTC房间超过MaxIdleTime的时长,自动停止转推任务。注意:参与混流转推的主播仅是停止音视频上行,转推任务不会自动停止。
|
1217
|
-
2、WithTranscoding:如果需要将多路音视频流混合到一路时,WithTranscoding必须设置为1。
|
1218
|
-
3、AudioParams:转推任务音频参数和视频参数是分开设置的,若您想要将指定的用户音频进行混音时,需要明确设置AudioParams.SubscribeAudioList。若您不设置AudioParams.SubscribeAudioList,混音引擎会自动将TRTC房间中所有用户的音频混合。若您想要混合TRTC房间除指定用户之外的所有用户的声音,可以通过AudioParams.UnSubscribeAudioList设置音频黑名单列表。
|
1219
|
-
4、VideoParams:若您想要将用户的视频混合,可以通过VideoParams设置,若只想要混纯音频,则不用设置VideoParams参数。您可以通过VideoParams.LayoutParams.MixLayoutMode设置画面的布局模式,包括:动态布局(1:悬浮布局(默认),2:屏幕分享布局,3:九宫格布局)和自定义布局。动态布局模式由排版引擎按照固定的布局自动混合,不需要设置VideoParams.LayoutParams.MixLayoutList。当使用悬浮布局和屏幕分享布局时,您可以通过设置VideoParams.LayoutParams.MaxVideoUser参数指定大画面用户。自定义布局模式提供给您自主布局画面的能力,可以通过VideoParams.LayoutParams.MixLayoutList参数指定每个用户所在的布局位置。在每个布局参数中,您可以通过用户媒体流参数(UserMediaStream)指定这个布局位置为指定的用户预留,也可以不设置UserMediaStream,由排版引擎按照用户进入TRTC房间的顺序自动填充,另外您也可以设置每个布局位置的渲染方式(RenderMode)和裁剪方式(CustomCrop)。
|
1220
|
-
5、VideoParams.WaterMarkList:若您想要混流画面中叠加水印,可以通过VideoParams.WaterMarkList参数设置,支持图片水印和文字水印,支持透明通道。
|
1221
|
-
6、SingleSubscribeParams:若您想要将TRTC房间中的一路单流推到CDN,可以使用SingleSubscribeParams参数设置,此时需要将WithTranscoding参数设置为0。
|
1222
|
-
7、PublishCdnParams.N:若您想要推流到CDN,可以使用PublishCdnParams.N参数设置,支持最多同时推流到10个CDN地址。若转推地址是腾讯云CDN时,请将IsTencentCdn明确设置为1;若您有转推非腾讯云CDN的需求时,请联系腾讯云技术支持开通,转推非腾讯云会产生转推费用,费用说明请参考官网文档:[云端转推计费说明](https://cloud.tencent.com/document/product/647/82155)。
|
1223
|
-
8、FeedBackRoomParams.N:若您想要将混合的音视频流回推到TRTC房间,可以使用FeedBackRoomParams.N参数设置,支持最多同时推10路流回TRTC房间。您需要指定回推的TRTC房间号和机器人ID(UserId),机器人ID不能与普通用户ID冲突,否则会导致转推任务由于机器人用户被踢出TRTC房间而异常结束,您可以通过增加特殊前缀的方式规避。
|
1224
|
-
9、SeiParams:若您想要混合的音视频流中增加SEI信息时,可以使用SeiParams参数设置,支持音量布局SEI和叠加转推请求中的SEI,其中音量布局SEI的内容是固定的json结构,具体请看本章节后续的SEI说明。您可以通过FollowIdr参数设置SEI跟随关键帧一起发送。音量布局sei的说明如下:
|
1225
|
-
如果您的CDN观众端需要识别到参与混流的主播位置,以及需要识别到参与混流的主播的音量信息,可以通过音量布局sei实现。音量布局sei的payload内容及参数说明如下:
|
1226
|
-
|
1227
|
-
```
|
1228
|
-
{
|
1229
|
-
"app_data":"",
|
1230
|
-
"canvas":{
|
1231
|
-
"w":1080,
|
1232
|
-
"h":960
|
1233
|
-
},
|
1234
|
-
"regions":[
|
1235
|
-
{
|
1236
|
-
"uid":"65949987242835883c",
|
1237
|
-
"zorder":2,
|
1238
|
-
"volume":45,
|
1239
|
-
"x":270,
|
1240
|
-
"y":480,
|
1241
|
-
"w":540,
|
1242
|
-
"h":480
|
1243
|
-
},
|
1244
|
-
{
|
1245
|
-
"uid":"659c9d8d242b328d31",
|
1246
|
-
"zorder":2,
|
1247
|
-
"volume":0,
|
1248
|
-
"x":0,
|
1249
|
-
"y":0,
|
1250
|
-
"w":540,
|
1251
|
-
"h":480
|
1252
|
-
},
|
1253
|
-
{
|
1254
|
-
"uid":"64989a82272b308c",
|
1255
|
-
"zorder":2,
|
1256
|
-
"volume":91,
|
1257
|
-
"x":540,
|
1258
|
-
"y":0,
|
1259
|
-
"w":540,
|
1260
|
-
"h":480
|
1261
|
-
}
|
1262
|
-
],
|
1263
|
-
"ver":"1.0",
|
1264
|
-
"ts":1648544726
|
1265
|
-
}
|
1266
|
-
```
|
1267
|
-
canvas:这个是混流信令中VideoEncode设置的宽高,即:混流输出的整个画布宽高。
|
1268
|
-
regions:里面是真实混入的用户id和对应的子画面位置,若参与混流的用户未进入TRTC房间或者未开启视频上行,regions中不会包含该用户。
|
1269
|
-
uid:代表参与混流的用户ID。
|
1270
|
-
zorder:参与混流userid在混流输出的层级。
|
1271
|
-
x/y:参与混流userid的子画面在画布的坐标。
|
1272
|
-
w/h:参与混流userid的子画面的大小。
|
1273
|
-
volume:代表混流用户的音量,取值范围为0-100,值越大,代表该用户参与混流时的音量越大。
|
1274
|
-
ts:是输出sei的服务器本地秒级时戳。
|
1275
|
-
ver:可以忽略。
|
1276
|
-
|
1277
|
-
其它使用注意事项:
|
1278
|
-
1、使用混流转推接口时,您需要先调用启动转推任务接口(StartPublishCdnStream),获取启动转推任务响应中的任务ID标识(TaskId)。后续传入任务ID标识(TaskId)来更新转推任务(UpdatePublishCdnStream)和停止转推任务(StopPublishCdnStream)。
|
1279
|
-
2、转推API不支持发起到TRTC控制台配置的自动旁路任务,以及通过TRTC SDK进房接口中设置的自定义流ID的旁路任务。
|
1280
|
-
3、为了确保转推链接的稳定,同一个转推任务不支持纯音频、音视频、纯视频之间的切换。
|
1281
|
-
4、为了确保转推链接的稳定,不支持update时更新视频参数(codec)和音频参数(codec、采样率、码率、声道数)。
|
1282
|
-
5、发起单流旁路任务时,AudioParams和VideoParams都填写表示音视频旁路,如果仅填写AudioParams表示纯音频旁路,任务进行过程中不支持纯音频到音视频的切换。音视频旁路时,VideoParams中的Width、Height、Fps、BitRate、Gop需要按照真实上行参数填写。
|
1283
|
-
6、更新请求中必须携带SequenceNumber参数,用于防止请求乱序。客户保证对同一个任务更新时的SequenceNumber参数递增,否则会导致混流任务更新失败。
|
1284
|
-
7、调用api时region选择说明:如果应用id是1400xxx时,region可填北京、上海、广州、香港,如果您的cdn观众主要在海外,请选择香港;如果应用id是200xxx或400xxx时,region请选择新加坡。
|
1285
|
-
8、回推到TRTC房间的流不会参与其他回推房间任务的混流,满足下面条件之一时,可以参与其他转推cdn任务的混流: (1) 转推cdn任务在视频参数中通过具名方式指定推流机器人参与混流;(2) 转推cdn任务在音频参数中通过白名单方式指定推流机器人参与混流;(3) 转推cdn任务参与混流用户的房间号与回推机器人对应混流用户的房间号完全不同。
|
1286
|
-
9、您可以在主播进房前,提前创建转推任务,结束转推任务时需要主动调用停止接口。如果您没有调用停止转推任务接口时,腾讯云后台会按照所有参与混流的用户没有任何数据上行的时间算起,直到超过启动转推任务时设置的超时时间(AgentParams.MaxIdleTime)为止,自动停止混流转推任务。
|
1191
|
+
"""接口说明:
|
1192
|
+
启动一个混流转推任务,将 TRTC 房间的多路音视频流混成一路音视频流,编码后推到直播 CDN 或者回推到 TRTC 房间。也支持不转码直接转推 TRTC 房间的单路流。启动成功后,会返回一个 SdkAppid 维度唯一的任务 Id(TaskId)。您需要保存该 TaskId,后续需要依赖此 TaskId 更新和结束任务。可以参考文档: [功能说明](https://cloud.tencent.com/document/product/647/84721#b9a855f4-e38c-4616-9b07-fc44e0e8282a) 和 [常见问题](https://cloud.tencent.com/document/product/647/62620)
|
1193
|
+
|
1194
|
+
注意:
|
1195
|
+
您可以在控制台开通旁路转推回调功能,对转推 CDN 状态的事件进行监控,回调请参考文档:[旁路转推回调说明](https://cloud.tencent.com/document/product/647/88552)
|
1196
|
+
您发起混流转推任务时,可能会产生如下费用:
|
1197
|
+
MCU 混流转码费用,请参考文档:[云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446)
|
1198
|
+
转推非腾讯云 CDN 费用,请参考文档:[云端转推计费说明](https://cloud.tencent.com/document/product/647/82155)
|
1287
1199
|
|
1288
1200
|
:param request: Request instance for StartPublishCdnStream.
|
1289
1201
|
:type request: :class:`tencentcloud.trtc.v20190722.models.StartPublishCdnStreamRequest`
|
@@ -1446,7 +1358,8 @@ class TrtcClient(AbstractClient):
|
|
1446
1358
|
|
1447
1359
|
|
1448
1360
|
def StopPublishCdnStream(self, request):
|
1449
|
-
"""
|
1361
|
+
"""接口说明:
|
1362
|
+
停止指定的混流转推任务。如果没有调用 Stop 接口停止任务,所有参与混流转推的主播离开 TRTC 房间超过 AgentParams.MaxIdleTime 设置的时间后,任务也会自动停止。
|
1450
1363
|
|
1451
1364
|
:param request: Request instance for StopPublishCdnStream.
|
1452
1365
|
:type request: :class:`tencentcloud.trtc.v20190722.models.StopPublishCdnStreamRequest`
|
@@ -1540,8 +1453,9 @@ class TrtcClient(AbstractClient):
|
|
1540
1453
|
|
1541
1454
|
|
1542
1455
|
def UpdatePublishCdnStream(self, request):
|
1543
|
-
"""
|
1544
|
-
|
1456
|
+
"""接口说明:
|
1457
|
+
成功发起混流转推后,可以使用此接口来更新任务。仅在任务进行时有效,任务退出后更新将会返回错误。更新操作为增量更新模式。
|
1458
|
+
注意:为了保障推流的稳定性,更新不支持任务在纯音频、音视频、纯视频之间进行切换。
|
1545
1459
|
|
1546
1460
|
:param request: Request instance for UpdatePublishCdnStream.
|
1547
1461
|
:type request: :class:`tencentcloud.trtc.v20190722.models.UpdatePublishCdnStreamRequest`
|
@@ -17153,10 +17153,10 @@ class DescribeContainerGroupsRequest(AbstractModel):
|
|
17153
17153
|
|
17154
17154
|
def __init__(self):
|
17155
17155
|
r"""
|
17156
|
+
:param _ApplicationId: 分组所属应用ID。
|
17157
|
+
:type ApplicationId: str
|
17156
17158
|
:param _SearchWord: 搜索字段,模糊搜索groupName字段
|
17157
17159
|
:type SearchWord: str
|
17158
|
-
:param _ApplicationId: 分组所属应用ID。必填
|
17159
|
-
:type ApplicationId: str
|
17160
17160
|
:param _OrderBy: 排序字段,默认为 createTime字段,支持id, name, createTime
|
17161
17161
|
:type OrderBy: str
|
17162
17162
|
:param _OrderType: 排序方式,默认为1:倒序排序,0:正序,1:倒序
|
@@ -17170,8 +17170,8 @@ class DescribeContainerGroupsRequest(AbstractModel):
|
|
17170
17170
|
:param _NamespaceId: 命名空间 ID
|
17171
17171
|
:type NamespaceId: str
|
17172
17172
|
"""
|
17173
|
-
self._SearchWord = None
|
17174
17173
|
self._ApplicationId = None
|
17174
|
+
self._SearchWord = None
|
17175
17175
|
self._OrderBy = None
|
17176
17176
|
self._OrderType = None
|
17177
17177
|
self._Offset = None
|
@@ -17179,14 +17179,6 @@ class DescribeContainerGroupsRequest(AbstractModel):
|
|
17179
17179
|
self._ClusterId = None
|
17180
17180
|
self._NamespaceId = None
|
17181
17181
|
|
17182
|
-
@property
|
17183
|
-
def SearchWord(self):
|
17184
|
-
return self._SearchWord
|
17185
|
-
|
17186
|
-
@SearchWord.setter
|
17187
|
-
def SearchWord(self, SearchWord):
|
17188
|
-
self._SearchWord = SearchWord
|
17189
|
-
|
17190
17182
|
@property
|
17191
17183
|
def ApplicationId(self):
|
17192
17184
|
return self._ApplicationId
|
@@ -17195,6 +17187,14 @@ class DescribeContainerGroupsRequest(AbstractModel):
|
|
17195
17187
|
def ApplicationId(self, ApplicationId):
|
17196
17188
|
self._ApplicationId = ApplicationId
|
17197
17189
|
|
17190
|
+
@property
|
17191
|
+
def SearchWord(self):
|
17192
|
+
return self._SearchWord
|
17193
|
+
|
17194
|
+
@SearchWord.setter
|
17195
|
+
def SearchWord(self, SearchWord):
|
17196
|
+
self._SearchWord = SearchWord
|
17197
|
+
|
17198
17198
|
@property
|
17199
17199
|
def OrderBy(self):
|
17200
17200
|
return self._OrderBy
|
@@ -17245,8 +17245,8 @@ class DescribeContainerGroupsRequest(AbstractModel):
|
|
17245
17245
|
|
17246
17246
|
|
17247
17247
|
def _deserialize(self, params):
|
17248
|
-
self._SearchWord = params.get("SearchWord")
|
17249
17248
|
self._ApplicationId = params.get("ApplicationId")
|
17249
|
+
self._SearchWord = params.get("SearchWord")
|
17250
17250
|
self._OrderBy = params.get("OrderBy")
|
17251
17251
|
self._OrderType = params.get("OrderType")
|
17252
17252
|
self._Offset = params.get("Offset")
|