tencentcloud-sdk-python-trtc 3.0.932__tar.gz → 3.0.946__tar.gz
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-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/PKG-INFO +1 -1
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/__init__.py +1 -1
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/trtc/v20190722/models.py +28 -4
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/trtc/v20190722/trtc_client.py +131 -57
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud_sdk_python_trtc.egg-info/PKG-INFO +1 -1
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/README.rst +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/setup.cfg +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/setup.py +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/trtc/__init__.py +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/trtc/v20190722/__init__.py +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud/trtc/v20190722/errorcodes.py +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud_sdk_python_trtc.egg-info/SOURCES.txt +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud_sdk_python_trtc.egg-info/dependency_links.txt +0 -0
- {tencentcloud-sdk-python-trtc-3.0.932 → tencentcloud-sdk-python-trtc-3.0.946}/tencentcloud_sdk_python_trtc.egg-info/top_level.txt +0 -0
|
@@ -4168,7 +4168,7 @@ class McuLayout(AbstractModel):
|
|
|
4168
4168
|
:type LocationY: int
|
|
4169
4169
|
:param _ZOrder: 子画面在输出时的层级,不填默认为0。
|
|
4170
4170
|
:type ZOrder: int
|
|
4171
|
-
:param _RenderMode: 子画面在输出时的显示模式:0为裁剪,1
|
|
4171
|
+
:param _RenderMode: 子画面在输出时的显示模式:0为裁剪,1为缩放并显示背景,2为缩放并显示黑底。不填默认为0。
|
|
4172
4172
|
:type RenderMode: int
|
|
4173
4173
|
:param _BackGroundColor: 【此参数配置无效,暂不支持】子画面的背景颜色,常用的颜色有:
|
|
4174
4174
|
红色:0xcc0033。
|
|
@@ -4183,6 +4183,8 @@ class McuLayout(AbstractModel):
|
|
|
4183
4183
|
:type BackgroundImageUrl: str
|
|
4184
4184
|
:param _CustomCrop: 客户自定义裁剪,针对原始输入流裁剪
|
|
4185
4185
|
:type CustomCrop: :class:`tencentcloud.trtc.v20190722.models.McuCustomCrop`
|
|
4186
|
+
:param _BackgroundRenderMode: 子背景图在输出时的显示模式:0为裁剪,1为缩放并显示背景,2为缩放并显示黑底,3为变比例伸缩。不填默认为3。
|
|
4187
|
+
:type BackgroundRenderMode: int
|
|
4186
4188
|
"""
|
|
4187
4189
|
self._UserMediaStream = None
|
|
4188
4190
|
self._ImageWidth = None
|
|
@@ -4194,6 +4196,7 @@ class McuLayout(AbstractModel):
|
|
|
4194
4196
|
self._BackGroundColor = None
|
|
4195
4197
|
self._BackgroundImageUrl = None
|
|
4196
4198
|
self._CustomCrop = None
|
|
4199
|
+
self._BackgroundRenderMode = None
|
|
4197
4200
|
|
|
4198
4201
|
@property
|
|
4199
4202
|
def UserMediaStream(self):
|
|
@@ -4275,6 +4278,14 @@ class McuLayout(AbstractModel):
|
|
|
4275
4278
|
def CustomCrop(self, CustomCrop):
|
|
4276
4279
|
self._CustomCrop = CustomCrop
|
|
4277
4280
|
|
|
4281
|
+
@property
|
|
4282
|
+
def BackgroundRenderMode(self):
|
|
4283
|
+
return self._BackgroundRenderMode
|
|
4284
|
+
|
|
4285
|
+
@BackgroundRenderMode.setter
|
|
4286
|
+
def BackgroundRenderMode(self, BackgroundRenderMode):
|
|
4287
|
+
self._BackgroundRenderMode = BackgroundRenderMode
|
|
4288
|
+
|
|
4278
4289
|
|
|
4279
4290
|
def _deserialize(self, params):
|
|
4280
4291
|
if params.get("UserMediaStream") is not None:
|
|
@@ -4291,6 +4302,7 @@ class McuLayout(AbstractModel):
|
|
|
4291
4302
|
if params.get("CustomCrop") is not None:
|
|
4292
4303
|
self._CustomCrop = McuCustomCrop()
|
|
4293
4304
|
self._CustomCrop._deserialize(params.get("CustomCrop"))
|
|
4305
|
+
self._BackgroundRenderMode = params.get("BackgroundRenderMode")
|
|
4294
4306
|
memeber_set = set(params.keys())
|
|
4295
4307
|
for name, value in vars(self).items():
|
|
4296
4308
|
property_name = name[1:]
|
|
@@ -4693,12 +4705,15 @@ class McuVideoParams(AbstractModel):
|
|
|
4693
4705
|
:type BackgroundImageUrl: str
|
|
4694
4706
|
:param _WaterMarkList: 混流布局的水印参数。
|
|
4695
4707
|
:type WaterMarkList: list of McuWaterMarkParams
|
|
4708
|
+
:param _BackgroundRenderMode: 背景图在输出时的显示模式:0为裁剪,1为缩放并显示黑底,2为变比例伸缩。后台默认为变比例伸缩。
|
|
4709
|
+
:type BackgroundRenderMode: int
|
|
4696
4710
|
"""
|
|
4697
4711
|
self._VideoEncode = None
|
|
4698
4712
|
self._LayoutParams = None
|
|
4699
4713
|
self._BackGroundColor = None
|
|
4700
4714
|
self._BackgroundImageUrl = None
|
|
4701
4715
|
self._WaterMarkList = None
|
|
4716
|
+
self._BackgroundRenderMode = None
|
|
4702
4717
|
|
|
4703
4718
|
@property
|
|
4704
4719
|
def VideoEncode(self):
|
|
@@ -4740,6 +4755,14 @@ class McuVideoParams(AbstractModel):
|
|
|
4740
4755
|
def WaterMarkList(self, WaterMarkList):
|
|
4741
4756
|
self._WaterMarkList = WaterMarkList
|
|
4742
4757
|
|
|
4758
|
+
@property
|
|
4759
|
+
def BackgroundRenderMode(self):
|
|
4760
|
+
return self._BackgroundRenderMode
|
|
4761
|
+
|
|
4762
|
+
@BackgroundRenderMode.setter
|
|
4763
|
+
def BackgroundRenderMode(self, BackgroundRenderMode):
|
|
4764
|
+
self._BackgroundRenderMode = BackgroundRenderMode
|
|
4765
|
+
|
|
4743
4766
|
|
|
4744
4767
|
def _deserialize(self, params):
|
|
4745
4768
|
if params.get("VideoEncode") is not None:
|
|
@@ -4756,6 +4779,7 @@ class McuVideoParams(AbstractModel):
|
|
|
4756
4779
|
obj = McuWaterMarkParams()
|
|
4757
4780
|
obj._deserialize(item)
|
|
4758
4781
|
self._WaterMarkList.append(obj)
|
|
4782
|
+
self._BackgroundRenderMode = params.get("BackgroundRenderMode")
|
|
4759
4783
|
memeber_set = set(params.keys())
|
|
4760
4784
|
for name, value in vars(self).items():
|
|
4761
4785
|
property_name = name[1:]
|
|
@@ -6216,7 +6240,7 @@ class RecordParams(AbstractModel):
|
|
|
6216
6240
|
:type StreamType: int
|
|
6217
6241
|
:param _SubscribeStreamUserIds: 指定订阅流白名单或者黑名单。
|
|
6218
6242
|
:type SubscribeStreamUserIds: :class:`tencentcloud.trtc.v20190722.models.SubscribeStreamUserIds`
|
|
6219
|
-
:param _OutputFormat: 输出文件的格式,上传到云点播时此参数无效,存储到云点播时请关注TencentVod内的MediaType参数。0:(默认)输出文件为hls格式。1:输出文件格式为hls+mp4。2:输出文件格式为hls+aac 。
|
|
6243
|
+
:param _OutputFormat: 输出文件的格式,上传到云点播时此参数无效,存储到云点播时请关注TencentVod内的MediaType参数。0:(默认)输出文件为hls格式。1:输出文件格式为hls+mp4。2:输出文件格式为hls+aac 。3:输出文件格式为mp4。4:输出文件格式为aac。
|
|
6220
6244
|
:type OutputFormat: int
|
|
6221
6245
|
:param _AvMerge: 单流录制模式下,用户的音视频是否合并,0:单流音视频不合并(默认)。1:单流音视频合并成一个ts。混流录制此参数无需设置,默认音视频合并。
|
|
6222
6246
|
:type AvMerge: int
|
|
@@ -7067,7 +7091,7 @@ class StartMCUMixTranscodeByStrRoomIdRequest(AbstractModel):
|
|
|
7067
7091
|
:type EncodeParams: :class:`tencentcloud.trtc.v20190722.models.EncodeParams`
|
|
7068
7092
|
:param _LayoutParams: 混流输出布局参数。
|
|
7069
7093
|
:type LayoutParams: :class:`tencentcloud.trtc.v20190722.models.LayoutParams`
|
|
7070
|
-
:param _PublishCdnParams: 第三方CDN
|
|
7094
|
+
:param _PublishCdnParams: 第三方CDN转推参数。如需转推至腾讯云云直播,此参数无需填写,会默认转推
|
|
7071
7095
|
:type PublishCdnParams: :class:`tencentcloud.trtc.v20190722.models.PublishCdnParams`
|
|
7072
7096
|
"""
|
|
7073
7097
|
self._SdkAppId = None
|
|
@@ -7193,7 +7217,7 @@ class StartMCUMixTranscodeRequest(AbstractModel):
|
|
|
7193
7217
|
:type EncodeParams: :class:`tencentcloud.trtc.v20190722.models.EncodeParams`
|
|
7194
7218
|
:param _LayoutParams: 混流输出布局参数。
|
|
7195
7219
|
:type LayoutParams: :class:`tencentcloud.trtc.v20190722.models.LayoutParams`
|
|
7196
|
-
:param _PublishCdnParams: 第三方CDN
|
|
7220
|
+
:param _PublishCdnParams: 第三方CDN转推参数。如需转推至腾讯云云直播,此参数无需填写,会默认转推
|
|
7197
7221
|
:type PublishCdnParams: :class:`tencentcloud.trtc.v20190722.models.PublishCdnParams`
|
|
7198
7222
|
"""
|
|
7199
7223
|
self._SdkAppId = None
|
|
@@ -57,7 +57,7 @@ class TrtcClient(AbstractClient):
|
|
|
57
57
|
if isinstance(e, TencentCloudSDKException):
|
|
58
58
|
raise
|
|
59
59
|
else:
|
|
60
|
-
raise TencentCloudSDKException(e.
|
|
60
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
def CreatePicture(self, request):
|
|
@@ -80,7 +80,7 @@ class TrtcClient(AbstractClient):
|
|
|
80
80
|
if isinstance(e, TencentCloudSDKException):
|
|
81
81
|
raise
|
|
82
82
|
else:
|
|
83
|
-
raise TencentCloudSDKException(e.
|
|
83
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
def DeleteCloudRecording(self, request):
|
|
@@ -103,7 +103,7 @@ class TrtcClient(AbstractClient):
|
|
|
103
103
|
if isinstance(e, TencentCloudSDKException):
|
|
104
104
|
raise
|
|
105
105
|
else:
|
|
106
|
-
raise TencentCloudSDKException(e.
|
|
106
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
def DeletePicture(self, request):
|
|
@@ -126,7 +126,7 @@ class TrtcClient(AbstractClient):
|
|
|
126
126
|
if isinstance(e, TencentCloudSDKException):
|
|
127
127
|
raise
|
|
128
128
|
else:
|
|
129
|
-
raise TencentCloudSDKException(e.
|
|
129
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
def DescribeCallDetailInfo(self, request):
|
|
@@ -152,7 +152,7 @@ class TrtcClient(AbstractClient):
|
|
|
152
152
|
if isinstance(e, TencentCloudSDKException):
|
|
153
153
|
raise
|
|
154
154
|
else:
|
|
155
|
-
raise TencentCloudSDKException(e.
|
|
155
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
156
156
|
|
|
157
157
|
|
|
158
158
|
def DescribeCloudRecording(self, request):
|
|
@@ -176,7 +176,7 @@ class TrtcClient(AbstractClient):
|
|
|
176
176
|
if isinstance(e, TencentCloudSDKException):
|
|
177
177
|
raise
|
|
178
178
|
else:
|
|
179
|
-
raise TencentCloudSDKException(e.
|
|
179
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
180
180
|
|
|
181
181
|
|
|
182
182
|
def DescribeMixTranscodingUsage(self, request):
|
|
@@ -204,7 +204,7 @@ class TrtcClient(AbstractClient):
|
|
|
204
204
|
if isinstance(e, TencentCloudSDKException):
|
|
205
205
|
raise
|
|
206
206
|
else:
|
|
207
|
-
raise TencentCloudSDKException(e.
|
|
207
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
208
208
|
|
|
209
209
|
|
|
210
210
|
def DescribePicture(self, request):
|
|
@@ -227,7 +227,7 @@ class TrtcClient(AbstractClient):
|
|
|
227
227
|
if isinstance(e, TencentCloudSDKException):
|
|
228
228
|
raise
|
|
229
229
|
else:
|
|
230
|
-
raise TencentCloudSDKException(e.
|
|
230
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
231
231
|
|
|
232
232
|
|
|
233
233
|
def DescribeRecordStatistic(self, request):
|
|
@@ -255,7 +255,7 @@ class TrtcClient(AbstractClient):
|
|
|
255
255
|
if isinstance(e, TencentCloudSDKException):
|
|
256
256
|
raise
|
|
257
257
|
else:
|
|
258
|
-
raise TencentCloudSDKException(e.
|
|
258
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
259
259
|
|
|
260
260
|
|
|
261
261
|
def DescribeRecordingUsage(self, request):
|
|
@@ -283,7 +283,7 @@ class TrtcClient(AbstractClient):
|
|
|
283
283
|
if isinstance(e, TencentCloudSDKException):
|
|
284
284
|
raise
|
|
285
285
|
else:
|
|
286
|
-
raise TencentCloudSDKException(e.
|
|
286
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
287
287
|
|
|
288
288
|
|
|
289
289
|
def DescribeRelayUsage(self, request):
|
|
@@ -311,7 +311,7 @@ class TrtcClient(AbstractClient):
|
|
|
311
311
|
if isinstance(e, TencentCloudSDKException):
|
|
312
312
|
raise
|
|
313
313
|
else:
|
|
314
|
-
raise TencentCloudSDKException(e.
|
|
314
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
315
315
|
|
|
316
316
|
|
|
317
317
|
def DescribeRoomInfo(self, request):
|
|
@@ -337,7 +337,7 @@ class TrtcClient(AbstractClient):
|
|
|
337
337
|
if isinstance(e, TencentCloudSDKException):
|
|
338
338
|
raise
|
|
339
339
|
else:
|
|
340
|
-
raise TencentCloudSDKException(e.
|
|
340
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
341
341
|
|
|
342
342
|
|
|
343
343
|
def DescribeScaleInfo(self, request):
|
|
@@ -360,7 +360,7 @@ class TrtcClient(AbstractClient):
|
|
|
360
360
|
if isinstance(e, TencentCloudSDKException):
|
|
361
361
|
raise
|
|
362
362
|
else:
|
|
363
|
-
raise TencentCloudSDKException(e.
|
|
363
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
364
364
|
|
|
365
365
|
|
|
366
366
|
def DescribeTRTCMarketQualityMetricData(self, request):
|
|
@@ -391,7 +391,7 @@ class TrtcClient(AbstractClient):
|
|
|
391
391
|
if isinstance(e, TencentCloudSDKException):
|
|
392
392
|
raise
|
|
393
393
|
else:
|
|
394
|
-
raise TencentCloudSDKException(e.
|
|
394
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
395
395
|
|
|
396
396
|
|
|
397
397
|
def DescribeTRTCMarketScaleMetricData(self, request):
|
|
@@ -421,7 +421,7 @@ class TrtcClient(AbstractClient):
|
|
|
421
421
|
if isinstance(e, TencentCloudSDKException):
|
|
422
422
|
raise
|
|
423
423
|
else:
|
|
424
|
-
raise TencentCloudSDKException(e.
|
|
424
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
425
425
|
|
|
426
426
|
|
|
427
427
|
def DescribeTRTCRealTimeQualityMetricData(self, request):
|
|
@@ -449,7 +449,7 @@ class TrtcClient(AbstractClient):
|
|
|
449
449
|
if isinstance(e, TencentCloudSDKException):
|
|
450
450
|
raise
|
|
451
451
|
else:
|
|
452
|
-
raise TencentCloudSDKException(e.
|
|
452
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
453
453
|
|
|
454
454
|
|
|
455
455
|
def DescribeTRTCRealTimeScaleMetricData(self, request):
|
|
@@ -479,7 +479,7 @@ class TrtcClient(AbstractClient):
|
|
|
479
479
|
if isinstance(e, TencentCloudSDKException):
|
|
480
480
|
raise
|
|
481
481
|
else:
|
|
482
|
-
raise TencentCloudSDKException(e.
|
|
482
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
483
483
|
|
|
484
484
|
|
|
485
485
|
def DescribeTrtcMcuTranscodeTime(self, request):
|
|
@@ -506,7 +506,7 @@ class TrtcClient(AbstractClient):
|
|
|
506
506
|
if isinstance(e, TencentCloudSDKException):
|
|
507
507
|
raise
|
|
508
508
|
else:
|
|
509
|
-
raise TencentCloudSDKException(e.
|
|
509
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
510
510
|
|
|
511
511
|
|
|
512
512
|
def DescribeTrtcRoomUsage(self, request):
|
|
@@ -532,7 +532,7 @@ class TrtcClient(AbstractClient):
|
|
|
532
532
|
if isinstance(e, TencentCloudSDKException):
|
|
533
533
|
raise
|
|
534
534
|
else:
|
|
535
|
-
raise TencentCloudSDKException(e.
|
|
535
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
536
536
|
|
|
537
537
|
|
|
538
538
|
def DescribeTrtcUsage(self, request):
|
|
@@ -560,7 +560,7 @@ class TrtcClient(AbstractClient):
|
|
|
560
560
|
if isinstance(e, TencentCloudSDKException):
|
|
561
561
|
raise
|
|
562
562
|
else:
|
|
563
|
-
raise TencentCloudSDKException(e.
|
|
563
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
564
564
|
|
|
565
565
|
|
|
566
566
|
def DescribeUnusualEvent(self, request):
|
|
@@ -584,7 +584,7 @@ class TrtcClient(AbstractClient):
|
|
|
584
584
|
if isinstance(e, TencentCloudSDKException):
|
|
585
585
|
raise
|
|
586
586
|
else:
|
|
587
|
-
raise TencentCloudSDKException(e.
|
|
587
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
588
588
|
|
|
589
589
|
|
|
590
590
|
def DescribeUserEvent(self, request):
|
|
@@ -607,7 +607,7 @@ class TrtcClient(AbstractClient):
|
|
|
607
607
|
if isinstance(e, TencentCloudSDKException):
|
|
608
608
|
raise
|
|
609
609
|
else:
|
|
610
|
-
raise TencentCloudSDKException(e.
|
|
610
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
611
611
|
|
|
612
612
|
|
|
613
613
|
def DescribeUserInfo(self, request):
|
|
@@ -633,7 +633,7 @@ class TrtcClient(AbstractClient):
|
|
|
633
633
|
if isinstance(e, TencentCloudSDKException):
|
|
634
634
|
raise
|
|
635
635
|
else:
|
|
636
|
-
raise TencentCloudSDKException(e.
|
|
636
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
637
637
|
|
|
638
638
|
|
|
639
639
|
def DismissRoom(self, request):
|
|
@@ -656,7 +656,7 @@ class TrtcClient(AbstractClient):
|
|
|
656
656
|
if isinstance(e, TencentCloudSDKException):
|
|
657
657
|
raise
|
|
658
658
|
else:
|
|
659
|
-
raise TencentCloudSDKException(e.
|
|
659
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
660
660
|
|
|
661
661
|
|
|
662
662
|
def DismissRoomByStrRoomId(self, request):
|
|
@@ -679,7 +679,7 @@ class TrtcClient(AbstractClient):
|
|
|
679
679
|
if isinstance(e, TencentCloudSDKException):
|
|
680
680
|
raise
|
|
681
681
|
else:
|
|
682
|
-
raise TencentCloudSDKException(e.
|
|
682
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
683
683
|
|
|
684
684
|
|
|
685
685
|
def ModifyCloudRecording(self, request):
|
|
@@ -702,7 +702,7 @@ class TrtcClient(AbstractClient):
|
|
|
702
702
|
if isinstance(e, TencentCloudSDKException):
|
|
703
703
|
raise
|
|
704
704
|
else:
|
|
705
|
-
raise TencentCloudSDKException(e.
|
|
705
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
706
706
|
|
|
707
707
|
|
|
708
708
|
def ModifyPicture(self, request):
|
|
@@ -725,7 +725,7 @@ class TrtcClient(AbstractClient):
|
|
|
725
725
|
if isinstance(e, TencentCloudSDKException):
|
|
726
726
|
raise
|
|
727
727
|
else:
|
|
728
|
-
raise TencentCloudSDKException(e.
|
|
728
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
729
729
|
|
|
730
730
|
|
|
731
731
|
def RemoveUser(self, request):
|
|
@@ -748,7 +748,7 @@ class TrtcClient(AbstractClient):
|
|
|
748
748
|
if isinstance(e, TencentCloudSDKException):
|
|
749
749
|
raise
|
|
750
750
|
else:
|
|
751
|
-
raise TencentCloudSDKException(e.
|
|
751
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
752
752
|
|
|
753
753
|
|
|
754
754
|
def RemoveUserByStrRoomId(self, request):
|
|
@@ -771,7 +771,7 @@ class TrtcClient(AbstractClient):
|
|
|
771
771
|
if isinstance(e, TencentCloudSDKException):
|
|
772
772
|
raise
|
|
773
773
|
else:
|
|
774
|
-
raise TencentCloudSDKException(e.
|
|
774
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
775
775
|
|
|
776
776
|
|
|
777
777
|
def StartMCUMixTranscode(self, request):
|
|
@@ -814,7 +814,7 @@ class TrtcClient(AbstractClient):
|
|
|
814
814
|
if isinstance(e, TencentCloudSDKException):
|
|
815
815
|
raise
|
|
816
816
|
else:
|
|
817
|
-
raise TencentCloudSDKException(e.
|
|
817
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
818
818
|
|
|
819
819
|
|
|
820
820
|
def StartMCUMixTranscodeByStrRoomId(self, request):
|
|
@@ -857,32 +857,106 @@ class TrtcClient(AbstractClient):
|
|
|
857
857
|
if isinstance(e, TencentCloudSDKException):
|
|
858
858
|
raise
|
|
859
859
|
else:
|
|
860
|
-
raise TencentCloudSDKException(e.
|
|
860
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
861
861
|
|
|
862
862
|
|
|
863
863
|
def StartPublishCdnStream(self, request):
|
|
864
|
-
"""
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
864
|
+
"""TRTC房间中可能会同时存在多路音视频流,您可以通过混流转推API,通知腾讯云服务端将同个房间或者多个房间的多路视频画面混合到一起,并指定每一路画面的位置,同时将多路声音进行混音,最终形成一路音视频流,以便用于录制和直播观看,同时可以支持将这一路音视频的混流回推到TRTC房间内部。
|
|
865
|
+
|
|
866
|
+
云api混流转推功能包含三个接口:
|
|
867
|
+
1、StartPublishCdnStream:启动一个混流转推任务,此接口会发起一个新的混流转推任务,启动成功后会返回一个sdkappid维度唯一的任务id(TaskId)。您需要保存该TaskId,后续需要依赖此TaskId更新任务和结束任务。
|
|
868
|
+
2、UpdatePublishCdnStream:更新指定的混流转推任务,包括:更新视频画面的布局、更新混音列表、更新转推cdn的地址列表以及更新回推房间列表。
|
|
869
|
+
3、StopPublishCdnStream:停止指定的混流转推任务。
|
|
870
|
+
|
|
871
|
+
您可以通过此套接口实现目标:
|
|
872
|
+
1、设置最终混流的画质和音质,包括视频分辨率、视频帧率、视频码率,和音频质量。
|
|
873
|
+
2、设置每一路画面的布局位置,您只需要设置一次,后续您指定的混流用户进房上行音视频时,排版引擎会自动将该用户的画面混合到您指定的布局位置。同时您可以使用更新接口调整画面的布局位置。
|
|
874
|
+
3、设置多个cdn转推的目的地址,一个转推任务最多可以同时设置10个cdn转推地址,如果您需要转推非腾讯云的cdn地址时,需要联系腾讯云开通能力。
|
|
875
|
+
4、设置多个回推房间列表,一个转推任务最多可以同时将混流回推到10个TRTC房间。
|
|
876
|
+
|
|
877
|
+
目前已经支持如下几种布局模版,其中动态布局模版(悬浮模板、九宫格模板、屏幕分享模板)只支持单个TRTC房间,自定义模版支持混合多个TRTC房间内的音视频流。具体说明如下:
|
|
878
|
+
1、悬浮模板:第一个进入房间的用户的视频画面会铺满整个屏幕,其他用户的视频画面从左下角依次水平排列,显示为小画面,最多4行,每行4个,小画面悬浮于大画面之上。最多支持1个大画面和15个小画面,如果用户只发送音频默认不占布局配置,也支持设置。每个子画面默认采用居中裁剪的方式进行渲染,也支持统一设置子画面的渲染方式。
|
|
879
|
+
2、九宫格模板:所有用户的视频画面大小一致,平分整个屏幕,人数越多,每个画面的尺寸越小。最多支持16个画面,如果用户只发送音频,默认不占布局配置,也支持设置。每个子画面默认采用居中裁剪的方式进行渲染,也支持统一设置子画面的渲染方式。
|
|
880
|
+
3、屏幕分享模板:适合视频会议和在线教育场景的布局,屏幕分享(或者主讲的摄像头)始终占据屏幕左侧的大画面位置,需要您明确设置占据大画面的混流用户信息。其他用户依次垂直排列于右侧,最多两列,每列最多8个小画面。最多支持1个大画面和15个小画面。若上行分辨率宽高比与画面输出宽高比不一致时,左侧大画面为了保持内容的完整性采用缩放方式处理,右侧小画面采用裁剪方式处理,也支持统一设置子画面的渲染方式。
|
|
881
|
+
4、自定义布局模版:支持您主动根据业务需要设置布局位置,每个预设的布局位置支持具名设置(具名设置需要明确指定房间号和用户名)和不具名设置。当一个子画面具名设置时,该位置就为该用户预留,用户进房且上行音视频数据时会自动占据该位置,其它用户不会占据该位置。当预设的布局位置未具名时,排版引擎会根据进房间顺序自动填充,预设位置填满时,不再混合其它用户的画面和声音。每个子画面位置支持设置占位图(BackgroundImageUrl),当用户未进房或者只上行音频数据时,该位置画面可显示对应的占位图画面。
|
|
882
|
+
|
|
883
|
+
您可以控制台开通旁路转推回调功能实现转推cdn状态的事件监控,具体说明请参考官网文档:[旁路转推回调说明](https://cloud.tencent.com/document/product/647/88552)
|
|
884
|
+
您使用转推api时根据使用特性可能会产生如下费用:
|
|
885
|
+
MCU混流转码费用请参考文档:[云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446)
|
|
886
|
+
转推非腾讯云CDN费用请参考文档:[云端转推计费说明](https://cloud.tencent.com/document/product/647/82155)
|
|
887
|
+
|
|
888
|
+
参数的使用说明:
|
|
889
|
+
1、AgentParams:每个转推任务会拉起一个机器人用户进入TRTC房间进行拉流,您需要通过AgentParams.UserId参数进行设置,这个机器人id不能和房间中的普通用户id冲突,否则会导致转推任务由于机器人用户被踢出TRTC房间而异常结束,您可以通过增加特殊前缀的方式规避。您可以通过设置AgentParams.MaxIdleTime控制转推任务的自动结束,当设置此参数时,所有参与混流转推的主播持续离开TRTC房间超过MaxIdleTime的时长,自动停止转推任务。注意:参与混流转推的主播仅是停止音视频上行,转推任务不会自动停止。
|
|
890
|
+
2、WithTranscoding:如果需要将多路音视频流混合到一路时,WithTranscoding必须设置为1。
|
|
891
|
+
3、AudioParams:转推任务音频参数和视频参数是分开设置的,若您想要将指定的用户音频进行混音时,需要明确设置AudioParams.SubscribeAudioList。若您不设置AudioParams.SubscribeAudioList,混音引擎会自动将TRTC房间中所有用户的音频混合。若您想要混合TRTC房间除指定用户之外的所有用户的声音,可以通过AudioParams.UnSubscribeAudioList设置音频黑名单列表。
|
|
892
|
+
4、VideoParams:若您想要将用户的视频混合,可以通过VideoParams设置,若只想要混纯音频,则不用设置VideoParams参数。您可以通过VideoParams.LayoutParams.MixLayoutMode设置画面的布局模式,包括:动态布局(1:悬浮布局(默认),2:屏幕分享布局,3:九宫格布局)和自定义布局。动态布局模式由排版引擎按照固定的布局自动混合,不需要设置VideoParams.LayoutParams.MixLayoutList。当使用悬浮布局和屏幕分享布局时,您可以通过设置VideoParams.LayoutParams.MaxVideoUser参数指定大画面用户。自定义布局模式提供给您自主布局画面的能力,可以通过VideoParams.LayoutParams.MixLayoutList参数指定每个用户所在的布局位置。在每个布局参数中,您可以通过用户媒体流参数(UserMediaStream)指定这个布局位置为指定的用户预留,也可以不设置UserMediaStream,由排版引擎按照用户进入TRTC房间的顺序自动填充,另外您也可以设置每个布局位置的渲染方式(RenderMode)和裁剪方式(CustomCrop)。
|
|
893
|
+
5、VideoParams.WaterMarkList:若您想要混流画面中叠加水印,可以通过VideoParams.WaterMarkList参数设置,支持图片水印和文字水印,支持透明通道。
|
|
894
|
+
6、SingleSubscribeParams:若您想要将TRTC房间中的一路单流推到CDN,可以使用SingleSubscribeParams参数设置,此时需要将WithTranscoding参数设置为0。
|
|
895
|
+
7、PublishCdnParams.N:若您想要推流到CDN,可以使用PublishCdnParams.N参数设置,支持最多同时推流到10个CDN地址。若转推地址是腾讯云CDN时,请将IsTencentCdn明确设置为1;若您有转推非腾讯云CDN的需求时,请联系腾讯云技术支持开通,转推非腾讯云会产生转推费用,费用说明请参考官网文档:[云端转推计费说明](https://cloud.tencent.com/document/product/647/82155)。
|
|
896
|
+
8、FeedBackRoomParams.N:若您想要将混合的音视频流回推到TRTC房间,可以使用FeedBackRoomParams.N参数设置,支持最多同时推10路流回TRTC房间。您需要指定回推的TRTC房间号和机器人ID(UserId),机器人ID不能与普通用户ID冲突,否则会导致转推任务由于机器人用户被踢出TRTC房间而异常结束,您可以通过增加特殊前缀的方式规避。
|
|
897
|
+
9、SeiParams:若您想要混合的音视频流中增加SEI信息时,可以使用SeiParams参数设置,支持音量布局SEI和叠加转推请求中的SEI,其中音量布局SEI的内容是固定的json结构,具体请看本章节后续的SEI说明。您可以通过FollowIdr参数设置SEI跟随关键帧一起发送。音量布局sei的说明如下:
|
|
898
|
+
如果您的CDN观众端需要识别到参与混流的主播位置,以及需要识别到参与混流的主播的音量信息,可以通过音量布局sei实现。音量布局sei的payload内容及参数说明如下:
|
|
899
|
+
|
|
900
|
+
```
|
|
901
|
+
{
|
|
902
|
+
"app_data":"",
|
|
903
|
+
"canvas":{
|
|
904
|
+
"w":1080,
|
|
905
|
+
"h":960
|
|
906
|
+
},
|
|
907
|
+
"regions":[
|
|
908
|
+
{
|
|
909
|
+
"uid":"65949987242835883c",
|
|
910
|
+
"zorder":2,
|
|
911
|
+
"volume":45,
|
|
912
|
+
"x":270,
|
|
913
|
+
"y":480,
|
|
914
|
+
"w":540,
|
|
915
|
+
"h":480
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"uid":"659c9d8d242b328d31",
|
|
919
|
+
"zorder":2,
|
|
920
|
+
"volume":0,
|
|
921
|
+
"x":0,
|
|
922
|
+
"y":0,
|
|
923
|
+
"w":540,
|
|
924
|
+
"h":480
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"uid":"64989a82272b308c",
|
|
928
|
+
"zorder":2,
|
|
929
|
+
"volume":91,
|
|
930
|
+
"x":540,
|
|
931
|
+
"y":0,
|
|
932
|
+
"w":540,
|
|
933
|
+
"h":480
|
|
934
|
+
}
|
|
935
|
+
],
|
|
936
|
+
"ver":"1.0",
|
|
937
|
+
"ts":1648544726
|
|
938
|
+
}
|
|
939
|
+
```
|
|
940
|
+
canvas:这个是混流信令中VideoEncode设置的宽高,即:混流输出的整个画布宽高。
|
|
941
|
+
regions:里面是真实混入的用户id和对应的子画面位置,若参与混流的用户未进入TRTC房间或者未开启视频上行,regions中不会包含该用户。
|
|
942
|
+
uid:代表参与混流的用户ID。
|
|
943
|
+
zorder:参与混流userid在混流输出的层级。
|
|
944
|
+
x/y:参与混流userid的子画面在画布的坐标。
|
|
945
|
+
w/h:参与混流userid的子画面的大小。
|
|
946
|
+
volume:代表混流用户的音量,取值范围为0-100,值越大,代表该用户参与混流时的音量越大。
|
|
947
|
+
ts:是输出sei的服务器本地秒级时戳。
|
|
948
|
+
ver:可以忽略。
|
|
949
|
+
|
|
950
|
+
其它使用注意事项:
|
|
880
951
|
1、使用混流转推接口时,您需要先调用启动转推任务接口(StartPublishCdnStream),获取启动转推任务响应中的任务ID标识(TaskId)。后续传入任务ID标识(TaskId)来更新转推任务(UpdatePublishCdnStream)和停止转推任务(StopPublishCdnStream)。
|
|
881
|
-
2
|
|
882
|
-
3
|
|
883
|
-
4
|
|
884
|
-
5
|
|
885
|
-
6
|
|
952
|
+
2、转推API不支持发起到TRTC控制台配置的自动旁路任务,以及通过TRTC SDK进房接口中设置的自定义流ID的旁路任务。
|
|
953
|
+
3、为了确保转推链接的稳定,同一个转推任务不支持纯音频、音视频、纯视频之间的切换。
|
|
954
|
+
4、为了确保转推链接的稳定,不支持update时更新视频参数(codec)和音频参数(codec、采样率、码率、声道数)。
|
|
955
|
+
5、发起单流旁路任务时,AudioParams和VideoParams都填写表示音视频旁路,如果仅填写AudioParams表示纯音频旁路,任务进行过程中不支持纯音频到音视频的切换。音视频旁路时,VideoParams中的Width、Height、Fps、BitRate、Gop需要按照真实上行参数填写。
|
|
956
|
+
6、更新请求中必须携带SequenceNumber参数,用于防止请求乱序。客户保证对同一个任务更新时的SequenceNumber参数递增,否则会导致混流任务更新失败。
|
|
957
|
+
7、调用api时region选择说明:如果应用id是1400xxx时,region可填北京、上海、广州、香港,如果您的cdn观众主要在海外,请选择香港;如果应用id是200xxx或400xxx时,region请选择新加坡。
|
|
958
|
+
8、回推到TRTC房间的流不会参与其他回推房间任务的混流,满足下面条件之一时,可以参与其他转推cdn任务的混流: (1) 转推cdn任务在视频参数中通过具名方式指定推流机器人参与混流;(2) 转推cdn任务在音频参数中通过白名单方式指定推流机器人参与混流;(3) 转推cdn任务参与混流用户的房间号与回推机器人对应混流用户的房间号完全不同。
|
|
959
|
+
9、您可以在主播进房前,提前创建转推任务,结束转推任务时需要主动调用停止接口。如果您没有调用停止转推任务接口时,腾讯云后台会按照所有参与混流的用户没有任何数据上行的时间算起,直到超过启动转推任务时设置的超时时间(AgentParams.MaxIdleTime)为止,自动停止混流转推任务。
|
|
886
960
|
|
|
887
961
|
:param request: Request instance for StartPublishCdnStream.
|
|
888
962
|
:type request: :class:`tencentcloud.trtc.v20190722.models.StartPublishCdnStreamRequest`
|
|
@@ -901,7 +975,7 @@ class TrtcClient(AbstractClient):
|
|
|
901
975
|
if isinstance(e, TencentCloudSDKException):
|
|
902
976
|
raise
|
|
903
977
|
else:
|
|
904
|
-
raise TencentCloudSDKException(e.
|
|
978
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
905
979
|
|
|
906
980
|
|
|
907
981
|
def StopMCUMixTranscode(self, request):
|
|
@@ -924,7 +998,7 @@ class TrtcClient(AbstractClient):
|
|
|
924
998
|
if isinstance(e, TencentCloudSDKException):
|
|
925
999
|
raise
|
|
926
1000
|
else:
|
|
927
|
-
raise TencentCloudSDKException(e.
|
|
1001
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
928
1002
|
|
|
929
1003
|
|
|
930
1004
|
def StopMCUMixTranscodeByStrRoomId(self, request):
|
|
@@ -947,7 +1021,7 @@ class TrtcClient(AbstractClient):
|
|
|
947
1021
|
if isinstance(e, TencentCloudSDKException):
|
|
948
1022
|
raise
|
|
949
1023
|
else:
|
|
950
|
-
raise TencentCloudSDKException(e.
|
|
1024
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
951
1025
|
|
|
952
1026
|
|
|
953
1027
|
def StopPublishCdnStream(self, request):
|
|
@@ -970,7 +1044,7 @@ class TrtcClient(AbstractClient):
|
|
|
970
1044
|
if isinstance(e, TencentCloudSDKException):
|
|
971
1045
|
raise
|
|
972
1046
|
else:
|
|
973
|
-
raise TencentCloudSDKException(e.
|
|
1047
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
974
1048
|
|
|
975
1049
|
|
|
976
1050
|
def UpdatePublishCdnStream(self, request):
|
|
@@ -994,4 +1068,4 @@ class TrtcClient(AbstractClient):
|
|
|
994
1068
|
if isinstance(e, TencentCloudSDKException):
|
|
995
1069
|
raise
|
|
996
1070
|
else:
|
|
997
|
-
raise TencentCloudSDKException(e.
|
|
1071
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|