aws-cdk.aws-ivs-alpha 2.135.0a0__py3-none-any.whl → 2.230.0a0__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.
@@ -1,4 +1,4 @@
1
- '''
1
+ r'''
2
2
  # AWS::IVS Construct Library
3
3
 
4
4
  <!--BEGIN STABILITY BANNER-->---
@@ -39,6 +39,54 @@ You can create a channel
39
39
  my_channel = ivs.Channel(self, "Channel")
40
40
  ```
41
41
 
42
+ You can use Advanced Channel type by setting the `type` property to
43
+ `ivs.ChannelType.ADVANCED_HD` or `ivs.ChannelType.ADVANCED_SD`.
44
+
45
+ Additionally, when using the Advanced Channel type, you can set
46
+ the `preset` property to `ivs.Preset.CONSTRAINED_BANDWIDTH_DELIVERY`
47
+ or `ivs.Preset.HIGHER_BANDWIDTH_DELIVERY`.
48
+
49
+ For more information, see [Amazon IVS Streaming Configuration](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/streaming-config.html).
50
+
51
+ ```python
52
+ my_channel = ivs.Channel(self, "myChannel",
53
+ type=ivs.ChannelType.ADVANCED_HD,
54
+ preset=ivs.Preset.CONSTRAINED_BANDWIDTH_DELIVERY
55
+ )
56
+ ```
57
+
58
+ If you want to use RTMP ingest, set `insecureIngest` property to `true`.
59
+ By default, `insecureIngest` is `false` which means using RTMPS ingest.
60
+
61
+ **⚠ Note:** RTMP ingest might result in reduced security for your streams. AWS recommends that you use RTMPS for ingest, unless you have specific and verified use cases. For more information, see [Encoder Settings](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/streaming-config.html#streaming-config-settings).
62
+
63
+ ```python
64
+ my_rtmp_channel = ivs.Channel(self, "myRtmpChannel",
65
+ type=ivs.ChannelType.STANDARD,
66
+ insecure_ingest=True
67
+ )
68
+ ```
69
+
70
+ ### Multitrack Video
71
+
72
+ Multitrack video is a new, low-latency streaming paradigm supported by Amazon Interactive Video Service (IVS) and services that use Amazon IVS.
73
+
74
+ You can use Multitrack Video by setting the `multitrackInputConfiguration` property.
75
+ Multitrack Video requires both a STANDARD Channel and Fragmented Mp4.
76
+
77
+ For more information, see [Amazon IVS Multitrack Video](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/multitrack-video.html).
78
+
79
+ ```python
80
+ ivs.Channel(self, "ChannelWithMultitrackVideo",
81
+ type=ivs.ChannelType.STANDARD,
82
+ container_format=ivs.ContainerFormat.FRAGMENTED_MP4,
83
+ multitrack_input_configuration=ivs.MultitrackInputConfiguration(
84
+ maximum_resolution=ivs.MaximumResolution.HD,
85
+ policy=ivs.Policy.ALLOW
86
+ )
87
+ )
88
+ ```
89
+
42
90
  ### Importing an existing channel
43
91
 
44
92
  You can reference an existing channel, for example, if you need to create a
@@ -87,6 +135,97 @@ my_channel = ivs.Channel(self, "Channel",
87
135
  authorized=True
88
136
  )
89
137
  ```
138
+
139
+ ## Recording Configurations
140
+
141
+ An Amazon IVS Recording Configuration stores settings that specify how a channel's live streams should be recorded.
142
+ You can configure video quality, thumbnail generation, and where recordings are stored in Amazon S3.
143
+
144
+ For more information about IVS recording, see [IVS Auto-Record to Amazon S3 | Low-Latency Streaming](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/record-to-s3.html).
145
+
146
+ You can create a recording configuration:
147
+
148
+ ```python
149
+ # create an S3 bucket for storing recordings
150
+ recording_bucket = s3.Bucket(self, "RecordingBucket")
151
+
152
+ # create a basic recording configuration
153
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
154
+ bucket=recording_bucket
155
+ )
156
+ ```
157
+
158
+ ### Renditions of a Recording
159
+
160
+ When you stream content to an Amazon IVS channel, auto-record-to-s3 uses the source video to generate multiple renditions.
161
+
162
+ For more information, see [Discovering the Renditions of a Recording](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/record-to-s3.html#r2s3-recording-renditions).
163
+
164
+ ```python
165
+ # recording_bucket: s3.Bucket
166
+
167
+
168
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
169
+ bucket=recording_bucket,
170
+
171
+ # set rendition configuration
172
+ rendition_configuration=ivs.RenditionConfiguration.custom([ivs.Resolution.HD, ivs.Resolution.SD])
173
+ )
174
+ ```
175
+
176
+ ### Thumbnail Generation
177
+
178
+ You can enable or disable the recording of thumbnails for a live session and modify the interval at which thumbnails are generated for the live session.
179
+
180
+ Thumbnail intervals may range from 1 second to 60 seconds; by default, thumbnail recording is enabled, at an interval of 60 seconds.
181
+
182
+ For more information, see [Thumbnails](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/record-to-s3.html#r2s3-thumbnails).
183
+
184
+ ```python
185
+ # recording_bucket: s3.Bucket
186
+
187
+
188
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
189
+ bucket=recording_bucket,
190
+
191
+ # set thumbnail settings
192
+ thumbnail_configuration=ivs.ThumbnailConfiguration.interval(ivs.Resolution.HD, [ivs.Storage.LATEST, ivs.Storage.SEQUENTIAL], Duration.seconds(30))
193
+ )
194
+ ```
195
+
196
+ ### Merge Fragmented Streams
197
+
198
+ The `recordingReconnectWindow` property allows you to specify a window of time (in seconds) during which, if your stream is interrupted and a new stream is started, Amazon IVS tries to record to the same S3 prefix as the previous stream.
199
+
200
+ In other words, if a broadcast disconnects and then reconnects within the specified interval, the multiple streams are considered a single broadcast and merged together.
201
+
202
+ For more information, see [Merge Fragmented Streams](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/record-to-s3.html#r2s3-merge-fragmented-streams).
203
+
204
+ ```python
205
+ # recording_bucket: s3.Bucket
206
+
207
+
208
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
209
+ bucket=recording_bucket,
210
+
211
+ # set recording reconnect window
212
+ recording_reconnect_window=Duration.seconds(60)
213
+ )
214
+ ```
215
+
216
+ ### Attaching Recording Configuration to a Channel
217
+
218
+ To enable recording for a channel, specify the recording configuration when creating the channel:
219
+
220
+ ```python
221
+ # recording_configuration: ivs.RecordingConfiguration
222
+
223
+
224
+ channel = ivs.Channel(self, "Channel",
225
+ # set recording configuration
226
+ recording_configuration=recording_configuration
227
+ )
228
+ ```
90
229
  '''
91
230
  from pkgutil import extend_path
92
231
  __path__ = extend_path(__path__, __name__)
@@ -101,11 +240,27 @@ import jsii
101
240
  import publication
102
241
  import typing_extensions
103
242
 
104
- from typeguard import check_type
243
+ import typeguard
244
+ from importlib.metadata import version as _metadata_package_version
245
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
246
+
247
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
248
+ if TYPEGUARD_MAJOR_VERSION <= 2:
249
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
250
+ else:
251
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
252
+ pass
253
+ else:
254
+ if TYPEGUARD_MAJOR_VERSION == 3:
255
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
256
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
257
+ else:
258
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
105
259
 
106
260
  from ._jsii import *
107
261
 
108
262
  import aws_cdk as _aws_cdk_ceddda9d
263
+ import aws_cdk.interfaces.aws_s3 as _aws_cdk_interfaces_aws_s3_ceddda9d
109
264
  import constructs as _constructs_77d1e7e8
110
265
 
111
266
 
@@ -115,7 +270,12 @@ import constructs as _constructs_77d1e7e8
115
270
  name_mapping={
116
271
  "authorized": "authorized",
117
272
  "channel_name": "channelName",
273
+ "container_format": "containerFormat",
274
+ "insecure_ingest": "insecureIngest",
118
275
  "latency_mode": "latencyMode",
276
+ "multitrack_input_configuration": "multitrackInputConfiguration",
277
+ "preset": "preset",
278
+ "recording_configuration": "recordingConfiguration",
119
279
  "type": "type",
120
280
  },
121
281
  )
@@ -125,14 +285,24 @@ class ChannelProps:
125
285
  *,
126
286
  authorized: typing.Optional[builtins.bool] = None,
127
287
  channel_name: typing.Optional[builtins.str] = None,
288
+ container_format: typing.Optional["ContainerFormat"] = None,
289
+ insecure_ingest: typing.Optional[builtins.bool] = None,
128
290
  latency_mode: typing.Optional["LatencyMode"] = None,
291
+ multitrack_input_configuration: typing.Optional[typing.Union["MultitrackInputConfiguration", typing.Dict[builtins.str, typing.Any]]] = None,
292
+ preset: typing.Optional["Preset"] = None,
293
+ recording_configuration: typing.Optional["IRecordingConfiguration"] = None,
129
294
  type: typing.Optional["ChannelType"] = None,
130
295
  ) -> None:
131
296
  '''(experimental) Properties for creating a new Channel.
132
297
 
133
298
  :param authorized: (experimental) Whether the channel is authorized. If you wish to make an authorized channel, you will need to ensure that a PlaybackKeyPair has been uploaded to your account as this is used to validate the signed JWT that is required for authorization Default: false
134
299
  :param channel_name: (experimental) A name for the channel. Default: Automatically generated name
300
+ :param container_format: (experimental) Indicates which content-packaging format is used (MPEG-TS or fMP4). If ``multitrackInputConfiguration`` is specified, only fMP4 can be used. Otherwise, ``containerFormat`` may be set to ``ContainerFormat.TS`` or ``ContainerFormat.FRAGMENTED_MP4``. Default: - ``ContainerFormat.FRAGMENTED_MP4`` is automatically set when the ``multitrackInputConfiguration`` is specified. If not specified, it remains undefined and uses the IVS default setting (TS).
301
+ :param insecure_ingest: (experimental) Whether the channel allows insecure RTMP ingest. Default: false
135
302
  :param latency_mode: (experimental) Channel latency mode. Default: LatencyMode.LOW
303
+ :param multitrack_input_configuration: (experimental) Object specifying multitrack input configuration. You must specify ``multitrackInputConfiguration`` if you want to use MultiTrack Video. ``multitrackInputConfiguration`` is only supported for ``ChannelType.STANDARD``. Default: undefined - IVS default setting is not use MultiTrack Video.
304
+ :param preset: (experimental) An optional transcode preset for the channel. Can be used for ADVANCED_HD and ADVANCED_SD channel types. When LOW or STANDARD is used, the preset will be overridden and set to none regardless of the value provided. Default: - Preset.HIGHER_BANDWIDTH_DELIVERY if channelType is ADVANCED_SD or ADVANCED_HD, none otherwise
305
+ :param recording_configuration: (experimental) A recording configuration for the channel. Default: - recording is disabled
136
306
  :param type: (experimental) The channel type, which determines the allowable resolution and bitrate. If you exceed the allowable resolution or bitrate, the stream will disconnect immediately Default: ChannelType.STANDARD
137
307
 
138
308
  :stability: experimental
@@ -140,23 +310,41 @@ class ChannelProps:
140
310
 
141
311
  Example::
142
312
 
143
- my_channel = ivs.Channel(self, "Channel",
144
- authorized=True
313
+ my_channel = ivs.Channel(self, "myChannel",
314
+ type=ivs.ChannelType.ADVANCED_HD,
315
+ preset=ivs.Preset.CONSTRAINED_BANDWIDTH_DELIVERY
145
316
  )
146
317
  '''
318
+ if isinstance(multitrack_input_configuration, dict):
319
+ multitrack_input_configuration = MultitrackInputConfiguration(**multitrack_input_configuration)
147
320
  if __debug__:
148
321
  type_hints = typing.get_type_hints(_typecheckingstub__0ebf6a0e98bbd5b88d9676fbe616666a44f837cba80675eade5df1fea22c9d22)
149
322
  check_type(argname="argument authorized", value=authorized, expected_type=type_hints["authorized"])
150
323
  check_type(argname="argument channel_name", value=channel_name, expected_type=type_hints["channel_name"])
324
+ check_type(argname="argument container_format", value=container_format, expected_type=type_hints["container_format"])
325
+ check_type(argname="argument insecure_ingest", value=insecure_ingest, expected_type=type_hints["insecure_ingest"])
151
326
  check_type(argname="argument latency_mode", value=latency_mode, expected_type=type_hints["latency_mode"])
327
+ check_type(argname="argument multitrack_input_configuration", value=multitrack_input_configuration, expected_type=type_hints["multitrack_input_configuration"])
328
+ check_type(argname="argument preset", value=preset, expected_type=type_hints["preset"])
329
+ check_type(argname="argument recording_configuration", value=recording_configuration, expected_type=type_hints["recording_configuration"])
152
330
  check_type(argname="argument type", value=type, expected_type=type_hints["type"])
153
331
  self._values: typing.Dict[builtins.str, typing.Any] = {}
154
332
  if authorized is not None:
155
333
  self._values["authorized"] = authorized
156
334
  if channel_name is not None:
157
335
  self._values["channel_name"] = channel_name
336
+ if container_format is not None:
337
+ self._values["container_format"] = container_format
338
+ if insecure_ingest is not None:
339
+ self._values["insecure_ingest"] = insecure_ingest
158
340
  if latency_mode is not None:
159
341
  self._values["latency_mode"] = latency_mode
342
+ if multitrack_input_configuration is not None:
343
+ self._values["multitrack_input_configuration"] = multitrack_input_configuration
344
+ if preset is not None:
345
+ self._values["preset"] = preset
346
+ if recording_configuration is not None:
347
+ self._values["recording_configuration"] = recording_configuration
160
348
  if type is not None:
161
349
  self._values["type"] = type
162
350
 
@@ -186,6 +374,31 @@ class ChannelProps:
186
374
  result = self._values.get("channel_name")
187
375
  return typing.cast(typing.Optional[builtins.str], result)
188
376
 
377
+ @builtins.property
378
+ def container_format(self) -> typing.Optional["ContainerFormat"]:
379
+ '''(experimental) Indicates which content-packaging format is used (MPEG-TS or fMP4).
380
+
381
+ If ``multitrackInputConfiguration`` is specified, only fMP4 can be used.
382
+ Otherwise, ``containerFormat`` may be set to ``ContainerFormat.TS`` or ``ContainerFormat.FRAGMENTED_MP4``.
383
+
384
+ :default: - ``ContainerFormat.FRAGMENTED_MP4`` is automatically set when the ``multitrackInputConfiguration`` is specified. If not specified, it remains undefined and uses the IVS default setting (TS).
385
+
386
+ :stability: experimental
387
+ '''
388
+ result = self._values.get("container_format")
389
+ return typing.cast(typing.Optional["ContainerFormat"], result)
390
+
391
+ @builtins.property
392
+ def insecure_ingest(self) -> typing.Optional[builtins.bool]:
393
+ '''(experimental) Whether the channel allows insecure RTMP ingest.
394
+
395
+ :default: false
396
+
397
+ :stability: experimental
398
+ '''
399
+ result = self._values.get("insecure_ingest")
400
+ return typing.cast(typing.Optional[builtins.bool], result)
401
+
189
402
  @builtins.property
190
403
  def latency_mode(self) -> typing.Optional["LatencyMode"]:
191
404
  '''(experimental) Channel latency mode.
@@ -197,6 +410,47 @@ class ChannelProps:
197
410
  result = self._values.get("latency_mode")
198
411
  return typing.cast(typing.Optional["LatencyMode"], result)
199
412
 
413
+ @builtins.property
414
+ def multitrack_input_configuration(
415
+ self,
416
+ ) -> typing.Optional["MultitrackInputConfiguration"]:
417
+ '''(experimental) Object specifying multitrack input configuration. You must specify ``multitrackInputConfiguration`` if you want to use MultiTrack Video.
418
+
419
+ ``multitrackInputConfiguration`` is only supported for ``ChannelType.STANDARD``.
420
+
421
+ :default: undefined - IVS default setting is not use MultiTrack Video.
422
+
423
+ :see: https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/multitrack-video.html
424
+ :stability: experimental
425
+ '''
426
+ result = self._values.get("multitrack_input_configuration")
427
+ return typing.cast(typing.Optional["MultitrackInputConfiguration"], result)
428
+
429
+ @builtins.property
430
+ def preset(self) -> typing.Optional["Preset"]:
431
+ '''(experimental) An optional transcode preset for the channel.
432
+
433
+ Can be used for ADVANCED_HD and ADVANCED_SD channel types.
434
+ When LOW or STANDARD is used, the preset will be overridden and set to none regardless of the value provided.
435
+
436
+ :default: - Preset.HIGHER_BANDWIDTH_DELIVERY if channelType is ADVANCED_SD or ADVANCED_HD, none otherwise
437
+
438
+ :stability: experimental
439
+ '''
440
+ result = self._values.get("preset")
441
+ return typing.cast(typing.Optional["Preset"], result)
442
+
443
+ @builtins.property
444
+ def recording_configuration(self) -> typing.Optional["IRecordingConfiguration"]:
445
+ '''(experimental) A recording configuration for the channel.
446
+
447
+ :default: - recording is disabled
448
+
449
+ :stability: experimental
450
+ '''
451
+ result = self._values.get("recording_configuration")
452
+ return typing.cast(typing.Optional["IRecordingConfiguration"], result)
453
+
200
454
  @builtins.property
201
455
  def type(self) -> typing.Optional["ChannelType"]:
202
456
  '''(experimental) The channel type, which determines the allowable resolution and bitrate.
@@ -228,21 +482,78 @@ class ChannelType(enum.Enum):
228
482
 
229
483
  If you exceed the allowable resolution or bitrate, the stream probably will disconnect immediately.
230
484
 
485
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ivs-channel.html
231
486
  :stability: experimental
487
+ :exampleMetadata: infused
488
+
489
+ Example::
490
+
491
+ my_channel = ivs.Channel(self, "myChannel",
492
+ type=ivs.ChannelType.ADVANCED_HD,
493
+ preset=ivs.Preset.CONSTRAINED_BANDWIDTH_DELIVERY
494
+ )
232
495
  '''
233
496
 
234
497
  STANDARD = "STANDARD"
235
498
  '''(experimental) Multiple qualities are generated from the original input, to automatically give viewers the best experience for their devices and network conditions.
236
499
 
237
- :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ivs-channel.html
500
+ Transcoding allows higher playback quality across a range of download speeds. Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.
501
+ Audio is transcoded only for renditions 360p and below; above that, audio is passed through.
502
+
238
503
  :stability: experimental
239
504
  '''
240
505
  BASIC = "BASIC"
241
- '''(experimental) delivers the original input to viewers.
506
+ '''(experimental) Delivers the original input to viewers.
242
507
 
243
508
  The viewer’s video-quality choice is limited to the original input.
244
509
 
245
- :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ivs-channel.html
510
+ :stability: experimental
511
+ '''
512
+ ADVANCED_SD = "ADVANCED_SD"
513
+ '''(experimental) Multiple qualities are generated from the original input, to automatically give viewers the best experience for their devices and network conditions.
514
+
515
+ Input resolution can be up to 1080p and bitrate can be up to 8.5 Mbps; output is capped at SD quality (480p).
516
+ Audio for all renditions is transcoded, and an audio-only rendition is available.
517
+
518
+ :stability: experimental
519
+ '''
520
+ ADVANCED_HD = "ADVANCED_HD"
521
+ '''(experimental) Multiple qualities are generated from the original input, to automatically give viewers the best experience for their devices and network conditions.
522
+
523
+ Input resolution can be up to 1080p and bitrate can be up to 8.5 Mbps; output is capped at HD quality (720p).
524
+ Audio for all renditions is transcoded, and an audio-only rendition is available.
525
+
526
+ :stability: experimental
527
+ '''
528
+
529
+
530
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.ContainerFormat")
531
+ class ContainerFormat(enum.Enum):
532
+ '''(experimental) Container Format.
533
+
534
+ :stability: experimental
535
+ :exampleMetadata: infused
536
+
537
+ Example::
538
+
539
+ ivs.Channel(self, "ChannelWithMultitrackVideo",
540
+ type=ivs.ChannelType.STANDARD,
541
+ container_format=ivs.ContainerFormat.FRAGMENTED_MP4,
542
+ multitrack_input_configuration=ivs.MultitrackInputConfiguration(
543
+ maximum_resolution=ivs.MaximumResolution.HD,
544
+ policy=ivs.Policy.ALLOW
545
+ )
546
+ )
547
+ '''
548
+
549
+ TS = "TS"
550
+ '''(experimental) Use MPEG-TS.
551
+
552
+ :stability: experimental
553
+ '''
554
+ FRAGMENTED_MP4 = "FRAGMENTED_MP4"
555
+ '''(experimental) Use fMP4.
556
+
246
557
  :stability: experimental
247
558
  '''
248
559
 
@@ -362,6 +673,68 @@ class _IPlaybackKeyPairProxy(
362
673
  typing.cast(typing.Any, IPlaybackKeyPair).__jsii_proxy_class__ = lambda : _IPlaybackKeyPairProxy
363
674
 
364
675
 
676
+ @jsii.interface(jsii_type="@aws-cdk/aws-ivs-alpha.IRecordingConfiguration")
677
+ class IRecordingConfiguration(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
678
+ '''(experimental) Represents the IVS Recording configuration.
679
+
680
+ :stability: experimental
681
+ '''
682
+
683
+ @builtins.property
684
+ @jsii.member(jsii_name="recordingConfigurationArn")
685
+ def recording_configuration_arn(self) -> builtins.str:
686
+ '''(experimental) The ARN of the Recording configuration.
687
+
688
+ :stability: experimental
689
+ :attribute: true
690
+ '''
691
+ ...
692
+
693
+ @builtins.property
694
+ @jsii.member(jsii_name="recordingConfigurationId")
695
+ def recording_configuration_id(self) -> builtins.str:
696
+ '''(experimental) The ID of the Recording configuration.
697
+
698
+ :stability: experimental
699
+ :attribute: true
700
+ '''
701
+ ...
702
+
703
+
704
+ class _IRecordingConfigurationProxy(
705
+ jsii.proxy_for(_aws_cdk_ceddda9d.IResource), # type: ignore[misc]
706
+ ):
707
+ '''(experimental) Represents the IVS Recording configuration.
708
+
709
+ :stability: experimental
710
+ '''
711
+
712
+ __jsii_type__: typing.ClassVar[str] = "@aws-cdk/aws-ivs-alpha.IRecordingConfiguration"
713
+
714
+ @builtins.property
715
+ @jsii.member(jsii_name="recordingConfigurationArn")
716
+ def recording_configuration_arn(self) -> builtins.str:
717
+ '''(experimental) The ARN of the Recording configuration.
718
+
719
+ :stability: experimental
720
+ :attribute: true
721
+ '''
722
+ return typing.cast(builtins.str, jsii.get(self, "recordingConfigurationArn"))
723
+
724
+ @builtins.property
725
+ @jsii.member(jsii_name="recordingConfigurationId")
726
+ def recording_configuration_id(self) -> builtins.str:
727
+ '''(experimental) The ID of the Recording configuration.
728
+
729
+ :stability: experimental
730
+ :attribute: true
731
+ '''
732
+ return typing.cast(builtins.str, jsii.get(self, "recordingConfigurationId"))
733
+
734
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
735
+ typing.cast(typing.Any, IRecordingConfiguration).__jsii_proxy_class__ = lambda : _IRecordingConfigurationProxy
736
+
737
+
365
738
  @jsii.interface(jsii_type="@aws-cdk/aws-ivs-alpha.IStreamKey")
366
739
  class IStreamKey(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
367
740
  '''(experimental) Represents an IVS Stream Key.
@@ -427,6 +800,114 @@ class LatencyMode(enum.Enum):
427
800
  '''
428
801
 
429
802
 
803
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.MaximumResolution")
804
+ class MaximumResolution(enum.Enum):
805
+ '''(experimental) Maximum resolution for multitrack input.
806
+
807
+ :stability: experimental
808
+ :exampleMetadata: infused
809
+
810
+ Example::
811
+
812
+ ivs.Channel(self, "ChannelWithMultitrackVideo",
813
+ type=ivs.ChannelType.STANDARD,
814
+ container_format=ivs.ContainerFormat.FRAGMENTED_MP4,
815
+ multitrack_input_configuration=ivs.MultitrackInputConfiguration(
816
+ maximum_resolution=ivs.MaximumResolution.HD,
817
+ policy=ivs.Policy.ALLOW
818
+ )
819
+ )
820
+ '''
821
+
822
+ FULL_HD = "FULL_HD"
823
+ '''(experimental) Full HD (1080p).
824
+
825
+ :stability: experimental
826
+ '''
827
+ HD = "HD"
828
+ '''(experimental) HD (720p).
829
+
830
+ :stability: experimental
831
+ '''
832
+ SD = "SD"
833
+ '''(experimental) SD (480p).
834
+
835
+ :stability: experimental
836
+ '''
837
+
838
+
839
+ @jsii.data_type(
840
+ jsii_type="@aws-cdk/aws-ivs-alpha.MultitrackInputConfiguration",
841
+ jsii_struct_bases=[],
842
+ name_mapping={"maximum_resolution": "maximumResolution", "policy": "policy"},
843
+ )
844
+ class MultitrackInputConfiguration:
845
+ def __init__(
846
+ self,
847
+ *,
848
+ maximum_resolution: MaximumResolution,
849
+ policy: "Policy",
850
+ ) -> None:
851
+ '''(experimental) A complex type that specifies multitrack input configuration.
852
+
853
+ :param maximum_resolution: (experimental) Maximum resolution for multitrack input.
854
+ :param policy: (experimental) Indicates whether multitrack input is allowed or required.
855
+
856
+ :stability: experimental
857
+ :exampleMetadata: infused
858
+
859
+ Example::
860
+
861
+ ivs.Channel(self, "ChannelWithMultitrackVideo",
862
+ type=ivs.ChannelType.STANDARD,
863
+ container_format=ivs.ContainerFormat.FRAGMENTED_MP4,
864
+ multitrack_input_configuration=ivs.MultitrackInputConfiguration(
865
+ maximum_resolution=ivs.MaximumResolution.HD,
866
+ policy=ivs.Policy.ALLOW
867
+ )
868
+ )
869
+ '''
870
+ if __debug__:
871
+ type_hints = typing.get_type_hints(_typecheckingstub__45e5ad260ecfc7dc92d23bd36a068b4a317871ab3322fe7e7ef92573084ea6b6)
872
+ check_type(argname="argument maximum_resolution", value=maximum_resolution, expected_type=type_hints["maximum_resolution"])
873
+ check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
874
+ self._values: typing.Dict[builtins.str, typing.Any] = {
875
+ "maximum_resolution": maximum_resolution,
876
+ "policy": policy,
877
+ }
878
+
879
+ @builtins.property
880
+ def maximum_resolution(self) -> MaximumResolution:
881
+ '''(experimental) Maximum resolution for multitrack input.
882
+
883
+ :stability: experimental
884
+ '''
885
+ result = self._values.get("maximum_resolution")
886
+ assert result is not None, "Required property 'maximum_resolution' is missing"
887
+ return typing.cast(MaximumResolution, result)
888
+
889
+ @builtins.property
890
+ def policy(self) -> "Policy":
891
+ '''(experimental) Indicates whether multitrack input is allowed or required.
892
+
893
+ :stability: experimental
894
+ '''
895
+ result = self._values.get("policy")
896
+ assert result is not None, "Required property 'policy' is missing"
897
+ return typing.cast("Policy", result)
898
+
899
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
900
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
901
+
902
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
903
+ return not (rhs == self)
904
+
905
+ def __repr__(self) -> str:
906
+ return "MultitrackInputConfiguration(%s)" % ", ".join(
907
+ k + "=" + repr(v) for k, v in self._values.items()
908
+ )
909
+
910
+
430
911
  @jsii.implements(IPlaybackKeyPair)
431
912
  class PlaybackKeyPair(
432
913
  _aws_cdk_ceddda9d.Resource,
@@ -472,6 +953,15 @@ class PlaybackKeyPair(
472
953
 
473
954
  jsii.create(self.__class__, self, [scope, id, props])
474
955
 
956
+ @jsii.python.classproperty
957
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
958
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
959
+ '''(experimental) Uniquely identifies this class.
960
+
961
+ :stability: experimental
962
+ '''
963
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
964
+
475
965
  @builtins.property
476
966
  @jsii.member(jsii_name="playbackKeyPairArn")
477
967
  def playback_key_pair_arn(self) -> builtins.str:
@@ -570,11 +1060,545 @@ class PlaybackKeyPairProps:
570
1060
  )
571
1061
 
572
1062
 
573
- @jsii.implements(IStreamKey)
574
- class StreamKey(
575
- _aws_cdk_ceddda9d.Resource,
576
- metaclass=jsii.JSIIMeta,
577
- jsii_type="@aws-cdk/aws-ivs-alpha.StreamKey",
1063
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.Policy")
1064
+ class Policy(enum.Enum):
1065
+ '''(experimental) Whether multitrack input is allowed or required.
1066
+
1067
+ :stability: experimental
1068
+ :exampleMetadata: infused
1069
+
1070
+ Example::
1071
+
1072
+ ivs.Channel(self, "ChannelWithMultitrackVideo",
1073
+ type=ivs.ChannelType.STANDARD,
1074
+ container_format=ivs.ContainerFormat.FRAGMENTED_MP4,
1075
+ multitrack_input_configuration=ivs.MultitrackInputConfiguration(
1076
+ maximum_resolution=ivs.MaximumResolution.HD,
1077
+ policy=ivs.Policy.ALLOW
1078
+ )
1079
+ )
1080
+ '''
1081
+
1082
+ ALLOW = "ALLOW"
1083
+ '''(experimental) Multitrack input is allowed.
1084
+
1085
+ :stability: experimental
1086
+ '''
1087
+ REQUIRE = "REQUIRE"
1088
+ '''(experimental) Multitrack input is required.
1089
+
1090
+ :stability: experimental
1091
+ '''
1092
+
1093
+
1094
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.Preset")
1095
+ class Preset(enum.Enum):
1096
+ '''(experimental) An optional transcode preset for the channel.
1097
+
1098
+ This is selectable only for ADVANCED_HD and ADVANCED_SD channel types.
1099
+
1100
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ivs-channel.html
1101
+ :stability: experimental
1102
+ :exampleMetadata: infused
1103
+
1104
+ Example::
1105
+
1106
+ my_channel = ivs.Channel(self, "myChannel",
1107
+ type=ivs.ChannelType.ADVANCED_HD,
1108
+ preset=ivs.Preset.CONSTRAINED_BANDWIDTH_DELIVERY
1109
+ )
1110
+ '''
1111
+
1112
+ CONSTRAINED_BANDWIDTH_DELIVERY = "CONSTRAINED_BANDWIDTH_DELIVERY"
1113
+ '''(experimental) Use a lower bitrate than STANDARD for each quality level.
1114
+
1115
+ Use it if you have low download bandwidth and/or simple video content (e.g., talking heads).
1116
+
1117
+ :stability: experimental
1118
+ '''
1119
+ HIGHER_BANDWIDTH_DELIVERY = "HIGHER_BANDWIDTH_DELIVERY"
1120
+ '''(experimental) Use a higher bitrate for each quality level.
1121
+
1122
+ Use it if you have high download bandwidth and/or complex video content (e.g., flashes and quick scene changes).
1123
+
1124
+ :stability: experimental
1125
+ '''
1126
+
1127
+
1128
+ @jsii.implements(IRecordingConfiguration)
1129
+ class RecordingConfiguration(
1130
+ _aws_cdk_ceddda9d.Resource,
1131
+ metaclass=jsii.JSIIMeta,
1132
+ jsii_type="@aws-cdk/aws-ivs-alpha.RecordingConfiguration",
1133
+ ):
1134
+ '''(experimental) The IVS Recording configuration.
1135
+
1136
+ :stability: experimental
1137
+ :resource: AWS::IVS::RecordingConfiguration
1138
+ :exampleMetadata: infused
1139
+
1140
+ Example::
1141
+
1142
+ # recording_bucket: s3.Bucket
1143
+
1144
+
1145
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1146
+ bucket=recording_bucket,
1147
+
1148
+ # set rendition configuration
1149
+ rendition_configuration=ivs.RenditionConfiguration.custom([ivs.Resolution.HD, ivs.Resolution.SD])
1150
+ )
1151
+ '''
1152
+
1153
+ def __init__(
1154
+ self,
1155
+ scope: _constructs_77d1e7e8.Construct,
1156
+ id: builtins.str,
1157
+ *,
1158
+ bucket: _aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef,
1159
+ recording_configuration_name: typing.Optional[builtins.str] = None,
1160
+ recording_reconnect_window: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1161
+ rendition_configuration: typing.Optional["RenditionConfiguration"] = None,
1162
+ thumbnail_configuration: typing.Optional["ThumbnailConfiguration"] = None,
1163
+ ) -> None:
1164
+ '''
1165
+ :param scope: -
1166
+ :param id: -
1167
+ :param bucket: (experimental) S3 bucket where recorded videos will be stored.
1168
+ :param recording_configuration_name: (experimental) The name of the Recording configuration. The value does not need to be unique. Default: - auto generate
1169
+ :param recording_reconnect_window: (experimental) If a broadcast disconnects and then reconnects within the specified interval, the multiple streams will be considered a single broadcast and merged together. ``recordingReconnectWindow`` must be between 0 and 300 seconds Default: - 0 seconds (means disabled)
1170
+ :param rendition_configuration: (experimental) A rendition configuration describes which renditions should be recorded for a stream. Default: - no rendition configuration
1171
+ :param thumbnail_configuration: (experimental) A thumbnail configuration enables/disables the recording of thumbnails for a live session and controls the interval at which thumbnails are generated for the live session. Default: - no thumbnail configuration
1172
+
1173
+ :stability: experimental
1174
+ '''
1175
+ if __debug__:
1176
+ type_hints = typing.get_type_hints(_typecheckingstub__84f7bfe030fdaeee83dd169a4320aa71fb0e576e76fac8a6fb5e799d638df503)
1177
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1178
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1179
+ props = RecordingConfigurationProps(
1180
+ bucket=bucket,
1181
+ recording_configuration_name=recording_configuration_name,
1182
+ recording_reconnect_window=recording_reconnect_window,
1183
+ rendition_configuration=rendition_configuration,
1184
+ thumbnail_configuration=thumbnail_configuration,
1185
+ )
1186
+
1187
+ jsii.create(self.__class__, self, [scope, id, props])
1188
+
1189
+ @jsii.member(jsii_name="fromArn")
1190
+ @builtins.classmethod
1191
+ def from_arn(
1192
+ cls,
1193
+ scope: _constructs_77d1e7e8.Construct,
1194
+ id: builtins.str,
1195
+ recording_configuration_arn: builtins.str,
1196
+ ) -> IRecordingConfiguration:
1197
+ '''(experimental) Imports an IVS Recording Configuration from its ARN.
1198
+
1199
+ :param scope: -
1200
+ :param id: -
1201
+ :param recording_configuration_arn: -
1202
+
1203
+ :stability: experimental
1204
+ '''
1205
+ if __debug__:
1206
+ type_hints = typing.get_type_hints(_typecheckingstub__5f6cbd063c6e695eed56d0c9c16dea95fe5f4b2a11e461c72cb33aa8d324e82d)
1207
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1208
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1209
+ check_type(argname="argument recording_configuration_arn", value=recording_configuration_arn, expected_type=type_hints["recording_configuration_arn"])
1210
+ return typing.cast(IRecordingConfiguration, jsii.sinvoke(cls, "fromArn", [scope, id, recording_configuration_arn]))
1211
+
1212
+ @jsii.member(jsii_name="fromRecordingConfigurationId")
1213
+ @builtins.classmethod
1214
+ def from_recording_configuration_id(
1215
+ cls,
1216
+ scope: _constructs_77d1e7e8.Construct,
1217
+ id: builtins.str,
1218
+ recording_configuration_id: builtins.str,
1219
+ ) -> IRecordingConfiguration:
1220
+ '''(experimental) Imports an IVS Recording Configuration from attributes.
1221
+
1222
+ :param scope: -
1223
+ :param id: -
1224
+ :param recording_configuration_id: -
1225
+
1226
+ :stability: experimental
1227
+ '''
1228
+ if __debug__:
1229
+ type_hints = typing.get_type_hints(_typecheckingstub__9c05eebd5485c91c16b38e6bf9c1d896abb2eee019bb8f0da1ec7fa25b69b0d8)
1230
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1231
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1232
+ check_type(argname="argument recording_configuration_id", value=recording_configuration_id, expected_type=type_hints["recording_configuration_id"])
1233
+ return typing.cast(IRecordingConfiguration, jsii.sinvoke(cls, "fromRecordingConfigurationId", [scope, id, recording_configuration_id]))
1234
+
1235
+ @jsii.python.classproperty
1236
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
1237
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
1238
+ '''(experimental) Uniquely identifies this class.
1239
+
1240
+ :stability: experimental
1241
+ '''
1242
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
1243
+
1244
+ @builtins.property
1245
+ @jsii.member(jsii_name="recordingConfigurationArn")
1246
+ def recording_configuration_arn(self) -> builtins.str:
1247
+ '''(experimental) The ARN of the Recording configuration.
1248
+
1249
+ :stability: experimental
1250
+ :attribute: true
1251
+ '''
1252
+ return typing.cast(builtins.str, jsii.get(self, "recordingConfigurationArn"))
1253
+
1254
+ @builtins.property
1255
+ @jsii.member(jsii_name="recordingConfigurationId")
1256
+ def recording_configuration_id(self) -> builtins.str:
1257
+ '''(experimental) The ID of the Recording configuration.
1258
+
1259
+ :stability: experimental
1260
+ :attribute: true
1261
+ '''
1262
+ return typing.cast(builtins.str, jsii.get(self, "recordingConfigurationId"))
1263
+
1264
+
1265
+ @jsii.data_type(
1266
+ jsii_type="@aws-cdk/aws-ivs-alpha.RecordingConfigurationProps",
1267
+ jsii_struct_bases=[],
1268
+ name_mapping={
1269
+ "bucket": "bucket",
1270
+ "recording_configuration_name": "recordingConfigurationName",
1271
+ "recording_reconnect_window": "recordingReconnectWindow",
1272
+ "rendition_configuration": "renditionConfiguration",
1273
+ "thumbnail_configuration": "thumbnailConfiguration",
1274
+ },
1275
+ )
1276
+ class RecordingConfigurationProps:
1277
+ def __init__(
1278
+ self,
1279
+ *,
1280
+ bucket: _aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef,
1281
+ recording_configuration_name: typing.Optional[builtins.str] = None,
1282
+ recording_reconnect_window: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1283
+ rendition_configuration: typing.Optional["RenditionConfiguration"] = None,
1284
+ thumbnail_configuration: typing.Optional["ThumbnailConfiguration"] = None,
1285
+ ) -> None:
1286
+ '''(experimental) Properties of the IVS Recording configuration.
1287
+
1288
+ :param bucket: (experimental) S3 bucket where recorded videos will be stored.
1289
+ :param recording_configuration_name: (experimental) The name of the Recording configuration. The value does not need to be unique. Default: - auto generate
1290
+ :param recording_reconnect_window: (experimental) If a broadcast disconnects and then reconnects within the specified interval, the multiple streams will be considered a single broadcast and merged together. ``recordingReconnectWindow`` must be between 0 and 300 seconds Default: - 0 seconds (means disabled)
1291
+ :param rendition_configuration: (experimental) A rendition configuration describes which renditions should be recorded for a stream. Default: - no rendition configuration
1292
+ :param thumbnail_configuration: (experimental) A thumbnail configuration enables/disables the recording of thumbnails for a live session and controls the interval at which thumbnails are generated for the live session. Default: - no thumbnail configuration
1293
+
1294
+ :stability: experimental
1295
+ :exampleMetadata: infused
1296
+
1297
+ Example::
1298
+
1299
+ # recording_bucket: s3.Bucket
1300
+
1301
+
1302
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1303
+ bucket=recording_bucket,
1304
+
1305
+ # set rendition configuration
1306
+ rendition_configuration=ivs.RenditionConfiguration.custom([ivs.Resolution.HD, ivs.Resolution.SD])
1307
+ )
1308
+ '''
1309
+ if __debug__:
1310
+ type_hints = typing.get_type_hints(_typecheckingstub__21d80b5a61c717610ae7eec3eb729c41345980329354b0189415aab6624a4259)
1311
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
1312
+ check_type(argname="argument recording_configuration_name", value=recording_configuration_name, expected_type=type_hints["recording_configuration_name"])
1313
+ check_type(argname="argument recording_reconnect_window", value=recording_reconnect_window, expected_type=type_hints["recording_reconnect_window"])
1314
+ check_type(argname="argument rendition_configuration", value=rendition_configuration, expected_type=type_hints["rendition_configuration"])
1315
+ check_type(argname="argument thumbnail_configuration", value=thumbnail_configuration, expected_type=type_hints["thumbnail_configuration"])
1316
+ self._values: typing.Dict[builtins.str, typing.Any] = {
1317
+ "bucket": bucket,
1318
+ }
1319
+ if recording_configuration_name is not None:
1320
+ self._values["recording_configuration_name"] = recording_configuration_name
1321
+ if recording_reconnect_window is not None:
1322
+ self._values["recording_reconnect_window"] = recording_reconnect_window
1323
+ if rendition_configuration is not None:
1324
+ self._values["rendition_configuration"] = rendition_configuration
1325
+ if thumbnail_configuration is not None:
1326
+ self._values["thumbnail_configuration"] = thumbnail_configuration
1327
+
1328
+ @builtins.property
1329
+ def bucket(self) -> _aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef:
1330
+ '''(experimental) S3 bucket where recorded videos will be stored.
1331
+
1332
+ :stability: experimental
1333
+ '''
1334
+ result = self._values.get("bucket")
1335
+ assert result is not None, "Required property 'bucket' is missing"
1336
+ return typing.cast(_aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef, result)
1337
+
1338
+ @builtins.property
1339
+ def recording_configuration_name(self) -> typing.Optional[builtins.str]:
1340
+ '''(experimental) The name of the Recording configuration.
1341
+
1342
+ The value does not need to be unique.
1343
+
1344
+ :default: - auto generate
1345
+
1346
+ :stability: experimental
1347
+ '''
1348
+ result = self._values.get("recording_configuration_name")
1349
+ return typing.cast(typing.Optional[builtins.str], result)
1350
+
1351
+ @builtins.property
1352
+ def recording_reconnect_window(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
1353
+ '''(experimental) If a broadcast disconnects and then reconnects within the specified interval, the multiple streams will be considered a single broadcast and merged together.
1354
+
1355
+ ``recordingReconnectWindow`` must be between 0 and 300 seconds
1356
+
1357
+ :default: - 0 seconds (means disabled)
1358
+
1359
+ :stability: experimental
1360
+ '''
1361
+ result = self._values.get("recording_reconnect_window")
1362
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
1363
+
1364
+ @builtins.property
1365
+ def rendition_configuration(self) -> typing.Optional["RenditionConfiguration"]:
1366
+ '''(experimental) A rendition configuration describes which renditions should be recorded for a stream.
1367
+
1368
+ :default: - no rendition configuration
1369
+
1370
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ivs-recordingconfiguration-renditionconfiguration.html
1371
+ :stability: experimental
1372
+ '''
1373
+ result = self._values.get("rendition_configuration")
1374
+ return typing.cast(typing.Optional["RenditionConfiguration"], result)
1375
+
1376
+ @builtins.property
1377
+ def thumbnail_configuration(self) -> typing.Optional["ThumbnailConfiguration"]:
1378
+ '''(experimental) A thumbnail configuration enables/disables the recording of thumbnails for a live session and controls the interval at which thumbnails are generated for the live session.
1379
+
1380
+ :default: - no thumbnail configuration
1381
+
1382
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ivs-recordingconfiguration-thumbnailconfiguration.html
1383
+ :stability: experimental
1384
+ '''
1385
+ result = self._values.get("thumbnail_configuration")
1386
+ return typing.cast(typing.Optional["ThumbnailConfiguration"], result)
1387
+
1388
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1389
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1390
+
1391
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1392
+ return not (rhs == self)
1393
+
1394
+ def __repr__(self) -> str:
1395
+ return "RecordingConfigurationProps(%s)" % ", ".join(
1396
+ k + "=" + repr(v) for k, v in self._values.items()
1397
+ )
1398
+
1399
+
1400
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.RecordingMode")
1401
+ class RecordingMode(enum.Enum):
1402
+ '''(experimental) Thumbnail recording mode.
1403
+
1404
+ :stability: experimental
1405
+ '''
1406
+
1407
+ INTERVAL = "INTERVAL"
1408
+ '''(experimental) Use INTERVAL to enable the generation of thumbnails for recorded video at a time interval controlled by the TargetIntervalSeconds property.
1409
+
1410
+ :stability: experimental
1411
+ '''
1412
+ DISABLED = "DISABLED"
1413
+ '''(experimental) Use DISABLED to disable the generation of thumbnails for recorded video.
1414
+
1415
+ :stability: experimental
1416
+ '''
1417
+
1418
+
1419
+ class RenditionConfiguration(
1420
+ metaclass=jsii.JSIIMeta,
1421
+ jsii_type="@aws-cdk/aws-ivs-alpha.RenditionConfiguration",
1422
+ ):
1423
+ '''(experimental) Rendition configuration for IVS Recording configuration.
1424
+
1425
+ :stability: experimental
1426
+ :exampleMetadata: infused
1427
+
1428
+ Example::
1429
+
1430
+ # recording_bucket: s3.Bucket
1431
+
1432
+
1433
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1434
+ bucket=recording_bucket,
1435
+
1436
+ # set rendition configuration
1437
+ rendition_configuration=ivs.RenditionConfiguration.custom([ivs.Resolution.HD, ivs.Resolution.SD])
1438
+ )
1439
+ '''
1440
+
1441
+ @jsii.member(jsii_name="all")
1442
+ @builtins.classmethod
1443
+ def all(cls) -> "RenditionConfiguration":
1444
+ '''(experimental) Record all available renditions.
1445
+
1446
+ :stability: experimental
1447
+ '''
1448
+ return typing.cast("RenditionConfiguration", jsii.sinvoke(cls, "all", []))
1449
+
1450
+ @jsii.member(jsii_name="custom")
1451
+ @builtins.classmethod
1452
+ def custom(
1453
+ cls,
1454
+ renditions: typing.Sequence["Resolution"],
1455
+ ) -> "RenditionConfiguration":
1456
+ '''(experimental) Record a subset of video renditions.
1457
+
1458
+ :param renditions: A list of which renditions are recorded for a stream.
1459
+
1460
+ :stability: experimental
1461
+ '''
1462
+ if __debug__:
1463
+ type_hints = typing.get_type_hints(_typecheckingstub__72cbe17572adb3a1344760dd6061eca45611a877ad41668210371524b85d90da)
1464
+ check_type(argname="argument renditions", value=renditions, expected_type=type_hints["renditions"])
1465
+ return typing.cast("RenditionConfiguration", jsii.sinvoke(cls, "custom", [renditions]))
1466
+
1467
+ @jsii.member(jsii_name="none")
1468
+ @builtins.classmethod
1469
+ def none(cls) -> "RenditionConfiguration":
1470
+ '''(experimental) Does not record any video.
1471
+
1472
+ :stability: experimental
1473
+ '''
1474
+ return typing.cast("RenditionConfiguration", jsii.sinvoke(cls, "none", []))
1475
+
1476
+ @builtins.property
1477
+ @jsii.member(jsii_name="renditionSelection")
1478
+ def rendition_selection(self) -> "RenditionSelection":
1479
+ '''(experimental) The set of renditions are recorded for a stream.
1480
+
1481
+ :stability: experimental
1482
+ '''
1483
+ return typing.cast("RenditionSelection", jsii.get(self, "renditionSelection"))
1484
+
1485
+ @builtins.property
1486
+ @jsii.member(jsii_name="renditions")
1487
+ def renditions(self) -> typing.Optional[typing.List["Resolution"]]:
1488
+ '''(experimental) A list of which renditions are recorded for a stream.
1489
+
1490
+ If you do not specify this property, no resolution is selected.
1491
+
1492
+ :stability: experimental
1493
+ '''
1494
+ return typing.cast(typing.Optional[typing.List["Resolution"]], jsii.get(self, "renditions"))
1495
+
1496
+
1497
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.RenditionSelection")
1498
+ class RenditionSelection(enum.Enum):
1499
+ '''(experimental) Rendition selection mode.
1500
+
1501
+ :stability: experimental
1502
+ '''
1503
+
1504
+ ALL = "ALL"
1505
+ '''(experimental) Record all available renditions.
1506
+
1507
+ :stability: experimental
1508
+ '''
1509
+ NONE = "NONE"
1510
+ '''(experimental) Does not record any video.
1511
+
1512
+ This option is useful if you just want to record thumbnails.
1513
+
1514
+ :stability: experimental
1515
+ '''
1516
+ CUSTOM = "CUSTOM"
1517
+ '''(experimental) Select a subset of video renditions to record.
1518
+
1519
+ :stability: experimental
1520
+ '''
1521
+
1522
+
1523
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.Resolution")
1524
+ class Resolution(enum.Enum):
1525
+ '''(experimental) Resolution for rendition.
1526
+
1527
+ :stability: experimental
1528
+ :exampleMetadata: infused
1529
+
1530
+ Example::
1531
+
1532
+ # recording_bucket: s3.Bucket
1533
+
1534
+
1535
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1536
+ bucket=recording_bucket,
1537
+
1538
+ # set rendition configuration
1539
+ rendition_configuration=ivs.RenditionConfiguration.custom([ivs.Resolution.HD, ivs.Resolution.SD])
1540
+ )
1541
+ '''
1542
+
1543
+ FULL_HD = "FULL_HD"
1544
+ '''(experimental) Full HD (1080p).
1545
+
1546
+ :stability: experimental
1547
+ '''
1548
+ HD = "HD"
1549
+ '''(experimental) HD (720p).
1550
+
1551
+ :stability: experimental
1552
+ '''
1553
+ SD = "SD"
1554
+ '''(experimental) SD (480p).
1555
+
1556
+ :stability: experimental
1557
+ '''
1558
+ LOWEST_RESOLUTION = "LOWEST_RESOLUTION"
1559
+ '''(experimental) Lowest resolution.
1560
+
1561
+ :stability: experimental
1562
+ '''
1563
+
1564
+
1565
+ @jsii.enum(jsii_type="@aws-cdk/aws-ivs-alpha.Storage")
1566
+ class Storage(enum.Enum):
1567
+ '''(experimental) The format in which thumbnails are recorded for a stream.
1568
+
1569
+ :stability: experimental
1570
+ :exampleMetadata: infused
1571
+
1572
+ Example::
1573
+
1574
+ # recording_bucket: s3.Bucket
1575
+
1576
+
1577
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1578
+ bucket=recording_bucket,
1579
+
1580
+ # set thumbnail settings
1581
+ thumbnail_configuration=ivs.ThumbnailConfiguration.interval(ivs.Resolution.HD, [ivs.Storage.LATEST, ivs.Storage.SEQUENTIAL], Duration.seconds(30))
1582
+ )
1583
+ '''
1584
+
1585
+ SEQUENTIAL = "SEQUENTIAL"
1586
+ '''(experimental) SEQUENTIAL records all generated thumbnails in a serial manner, to the media/thumbnails directory.
1587
+
1588
+ :stability: experimental
1589
+ '''
1590
+ LATEST = "LATEST"
1591
+ '''(experimental) LATEST saves the latest thumbnail in media/thumbnails/latest/thumb.jpg and overwrites it at the interval specified by thumbnailTargetInterval.
1592
+
1593
+ :stability: experimental
1594
+ '''
1595
+
1596
+
1597
+ @jsii.implements(IStreamKey)
1598
+ class StreamKey(
1599
+ _aws_cdk_ceddda9d.Resource,
1600
+ metaclass=jsii.JSIIMeta,
1601
+ jsii_type="@aws-cdk/aws-ivs-alpha.StreamKey",
578
1602
  ):
579
1603
  '''(experimental) A new IVS Stream Key.
580
1604
 
@@ -608,6 +1632,15 @@ class StreamKey(
608
1632
 
609
1633
  jsii.create(self.__class__, self, [scope, id, props])
610
1634
 
1635
+ @jsii.python.classproperty
1636
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
1637
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
1638
+ '''(experimental) Uniquely identifies this class.
1639
+
1640
+ :stability: experimental
1641
+ '''
1642
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
1643
+
611
1644
  @builtins.property
612
1645
  @jsii.member(jsii_name="streamKeyArn")
613
1646
  def stream_key_arn(self) -> builtins.str:
@@ -687,6 +1720,105 @@ class StreamKeyProps:
687
1720
  )
688
1721
 
689
1722
 
1723
+ class ThumbnailConfiguration(
1724
+ metaclass=jsii.JSIIMeta,
1725
+ jsii_type="@aws-cdk/aws-ivs-alpha.ThumbnailConfiguration",
1726
+ ):
1727
+ '''(experimental) Thumbnail configuration for IVS Recording configuration.
1728
+
1729
+ :stability: experimental
1730
+ :exampleMetadata: infused
1731
+
1732
+ Example::
1733
+
1734
+ # recording_bucket: s3.Bucket
1735
+
1736
+
1737
+ recording_configuration = ivs.RecordingConfiguration(self, "RecordingConfiguration",
1738
+ bucket=recording_bucket,
1739
+
1740
+ # set thumbnail settings
1741
+ thumbnail_configuration=ivs.ThumbnailConfiguration.interval(ivs.Resolution.HD, [ivs.Storage.LATEST, ivs.Storage.SEQUENTIAL], Duration.seconds(30))
1742
+ )
1743
+ '''
1744
+
1745
+ @jsii.member(jsii_name="disable")
1746
+ @builtins.classmethod
1747
+ def disable(cls) -> "ThumbnailConfiguration":
1748
+ '''(experimental) Disable the generation of thumbnails for recorded video.
1749
+
1750
+ :stability: experimental
1751
+ '''
1752
+ return typing.cast("ThumbnailConfiguration", jsii.sinvoke(cls, "disable", []))
1753
+
1754
+ @jsii.member(jsii_name="interval")
1755
+ @builtins.classmethod
1756
+ def interval(
1757
+ cls,
1758
+ resolution: typing.Optional[Resolution] = None,
1759
+ storage: typing.Optional[typing.Sequence[Storage]] = None,
1760
+ target_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1761
+ ) -> "ThumbnailConfiguration":
1762
+ '''(experimental) Enable the generation of thumbnails for recorded video at a time interval.
1763
+
1764
+ :param resolution: The desired resolution of recorded thumbnails for a stream. If you do not specify this property, same resolution as Input stream is used.
1765
+ :param storage: The format in which thumbnails are recorded for a stream. If you do not specify this property, ``ThumbnailStorage.SEQUENTIAL`` is set.
1766
+ :param target_interval: The targeted thumbnail-generation interval. If you do not specify this property, ``Duration.seconds(60)`` is set.
1767
+
1768
+ :stability: experimental
1769
+ '''
1770
+ if __debug__:
1771
+ type_hints = typing.get_type_hints(_typecheckingstub__7613b92b71ccf7e94fae8fd523b44fd066922450801fcef8848b59ff75f9eeb2)
1772
+ check_type(argname="argument resolution", value=resolution, expected_type=type_hints["resolution"])
1773
+ check_type(argname="argument storage", value=storage, expected_type=type_hints["storage"])
1774
+ check_type(argname="argument target_interval", value=target_interval, expected_type=type_hints["target_interval"])
1775
+ return typing.cast("ThumbnailConfiguration", jsii.sinvoke(cls, "interval", [resolution, storage, target_interval]))
1776
+
1777
+ @builtins.property
1778
+ @jsii.member(jsii_name="recordingMode")
1779
+ def recording_mode(self) -> typing.Optional[RecordingMode]:
1780
+ '''(experimental) Thumbnail recording mode.
1781
+
1782
+ If you do not specify this property, ``ThumbnailRecordingMode.INTERVAL`` is set.
1783
+
1784
+ :stability: experimental
1785
+ '''
1786
+ return typing.cast(typing.Optional[RecordingMode], jsii.get(self, "recordingMode"))
1787
+
1788
+ @builtins.property
1789
+ @jsii.member(jsii_name="resolution")
1790
+ def resolution(self) -> typing.Optional[Resolution]:
1791
+ '''(experimental) The desired resolution of recorded thumbnails for a stream.
1792
+
1793
+ If you do not specify this property, same resolution as Input stream is used.
1794
+
1795
+ :stability: experimental
1796
+ '''
1797
+ return typing.cast(typing.Optional[Resolution], jsii.get(self, "resolution"))
1798
+
1799
+ @builtins.property
1800
+ @jsii.member(jsii_name="storage")
1801
+ def storage(self) -> typing.Optional[typing.List[Storage]]:
1802
+ '''(experimental) The format in which thumbnails are recorded for a stream.
1803
+
1804
+ If you do not specify this property, ``ThumbnailStorage.SEQUENTIAL`` is set.
1805
+
1806
+ :stability: experimental
1807
+ '''
1808
+ return typing.cast(typing.Optional[typing.List[Storage]], jsii.get(self, "storage"))
1809
+
1810
+ @builtins.property
1811
+ @jsii.member(jsii_name="targetInterval")
1812
+ def target_interval(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
1813
+ '''(experimental) The targeted thumbnail-generation interval.
1814
+
1815
+ Must be between 1 and 60 seconds. If you do not specify this property, ``Duration.seconds(60)`` is set.
1816
+
1817
+ :stability: experimental
1818
+ '''
1819
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], jsii.get(self, "targetInterval"))
1820
+
1821
+
690
1822
  @jsii.implements(IChannel)
691
1823
  class Channel(
692
1824
  _aws_cdk_ceddda9d.Resource,
@@ -700,7 +1832,10 @@ class Channel(
700
1832
 
701
1833
  Example::
702
1834
 
703
- my_channel = ivs.Channel(self, "Channel")
1835
+ my_rtmp_channel = ivs.Channel(self, "myRtmpChannel",
1836
+ type=ivs.ChannelType.STANDARD,
1837
+ insecure_ingest=True
1838
+ )
704
1839
  '''
705
1840
 
706
1841
  def __init__(
@@ -710,7 +1845,12 @@ class Channel(
710
1845
  *,
711
1846
  authorized: typing.Optional[builtins.bool] = None,
712
1847
  channel_name: typing.Optional[builtins.str] = None,
1848
+ container_format: typing.Optional[ContainerFormat] = None,
1849
+ insecure_ingest: typing.Optional[builtins.bool] = None,
713
1850
  latency_mode: typing.Optional[LatencyMode] = None,
1851
+ multitrack_input_configuration: typing.Optional[typing.Union[MultitrackInputConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
1852
+ preset: typing.Optional[Preset] = None,
1853
+ recording_configuration: typing.Optional[IRecordingConfiguration] = None,
714
1854
  type: typing.Optional[ChannelType] = None,
715
1855
  ) -> None:
716
1856
  '''
@@ -718,7 +1858,12 @@ class Channel(
718
1858
  :param id: -
719
1859
  :param authorized: (experimental) Whether the channel is authorized. If you wish to make an authorized channel, you will need to ensure that a PlaybackKeyPair has been uploaded to your account as this is used to validate the signed JWT that is required for authorization Default: false
720
1860
  :param channel_name: (experimental) A name for the channel. Default: Automatically generated name
1861
+ :param container_format: (experimental) Indicates which content-packaging format is used (MPEG-TS or fMP4). If ``multitrackInputConfiguration`` is specified, only fMP4 can be used. Otherwise, ``containerFormat`` may be set to ``ContainerFormat.TS`` or ``ContainerFormat.FRAGMENTED_MP4``. Default: - ``ContainerFormat.FRAGMENTED_MP4`` is automatically set when the ``multitrackInputConfiguration`` is specified. If not specified, it remains undefined and uses the IVS default setting (TS).
1862
+ :param insecure_ingest: (experimental) Whether the channel allows insecure RTMP ingest. Default: false
721
1863
  :param latency_mode: (experimental) Channel latency mode. Default: LatencyMode.LOW
1864
+ :param multitrack_input_configuration: (experimental) Object specifying multitrack input configuration. You must specify ``multitrackInputConfiguration`` if you want to use MultiTrack Video. ``multitrackInputConfiguration`` is only supported for ``ChannelType.STANDARD``. Default: undefined - IVS default setting is not use MultiTrack Video.
1865
+ :param preset: (experimental) An optional transcode preset for the channel. Can be used for ADVANCED_HD and ADVANCED_SD channel types. When LOW or STANDARD is used, the preset will be overridden and set to none regardless of the value provided. Default: - Preset.HIGHER_BANDWIDTH_DELIVERY if channelType is ADVANCED_SD or ADVANCED_HD, none otherwise
1866
+ :param recording_configuration: (experimental) A recording configuration for the channel. Default: - recording is disabled
722
1867
  :param type: (experimental) The channel type, which determines the allowable resolution and bitrate. If you exceed the allowable resolution or bitrate, the stream will disconnect immediately Default: ChannelType.STANDARD
723
1868
 
724
1869
  :stability: experimental
@@ -730,7 +1875,12 @@ class Channel(
730
1875
  props = ChannelProps(
731
1876
  authorized=authorized,
732
1877
  channel_name=channel_name,
1878
+ container_format=container_format,
1879
+ insecure_ingest=insecure_ingest,
733
1880
  latency_mode=latency_mode,
1881
+ multitrack_input_configuration=multitrack_input_configuration,
1882
+ preset=preset,
1883
+ recording_configuration=recording_configuration,
734
1884
  type=type,
735
1885
  )
736
1886
 
@@ -772,6 +1922,15 @@ class Channel(
772
1922
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
773
1923
  return typing.cast(StreamKey, jsii.invoke(self, "addStreamKey", [id]))
774
1924
 
1925
+ @jsii.python.classproperty
1926
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
1927
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
1928
+ '''(experimental) Uniquely identifies this class.
1929
+
1930
+ :stability: experimental
1931
+ '''
1932
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
1933
+
775
1934
  @builtins.property
776
1935
  @jsii.member(jsii_name="channelArn")
777
1936
  def channel_arn(self) -> builtins.str:
@@ -813,14 +1972,28 @@ __all__ = [
813
1972
  "Channel",
814
1973
  "ChannelProps",
815
1974
  "ChannelType",
1975
+ "ContainerFormat",
816
1976
  "IChannel",
817
1977
  "IPlaybackKeyPair",
1978
+ "IRecordingConfiguration",
818
1979
  "IStreamKey",
819
1980
  "LatencyMode",
1981
+ "MaximumResolution",
1982
+ "MultitrackInputConfiguration",
820
1983
  "PlaybackKeyPair",
821
1984
  "PlaybackKeyPairProps",
1985
+ "Policy",
1986
+ "Preset",
1987
+ "RecordingConfiguration",
1988
+ "RecordingConfigurationProps",
1989
+ "RecordingMode",
1990
+ "RenditionConfiguration",
1991
+ "RenditionSelection",
1992
+ "Resolution",
1993
+ "Storage",
822
1994
  "StreamKey",
823
1995
  "StreamKeyProps",
1996
+ "ThumbnailConfiguration",
824
1997
  ]
825
1998
 
826
1999
  publication.publish()
@@ -829,7 +2002,12 @@ def _typecheckingstub__0ebf6a0e98bbd5b88d9676fbe616666a44f837cba80675eade5df1fea
829
2002
  *,
830
2003
  authorized: typing.Optional[builtins.bool] = None,
831
2004
  channel_name: typing.Optional[builtins.str] = None,
2005
+ container_format: typing.Optional[ContainerFormat] = None,
2006
+ insecure_ingest: typing.Optional[builtins.bool] = None,
832
2007
  latency_mode: typing.Optional[LatencyMode] = None,
2008
+ multitrack_input_configuration: typing.Optional[typing.Union[MultitrackInputConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2009
+ preset: typing.Optional[Preset] = None,
2010
+ recording_configuration: typing.Optional[IRecordingConfiguration] = None,
833
2011
  type: typing.Optional[ChannelType] = None,
834
2012
  ) -> None:
835
2013
  """Type checking stubs"""
@@ -841,6 +2019,14 @@ def _typecheckingstub__809e7d60e77d2ede718027f4d99dcf810db3b33f39daebb557b424c64
841
2019
  """Type checking stubs"""
842
2020
  pass
843
2021
 
2022
+ def _typecheckingstub__45e5ad260ecfc7dc92d23bd36a068b4a317871ab3322fe7e7ef92573084ea6b6(
2023
+ *,
2024
+ maximum_resolution: MaximumResolution,
2025
+ policy: Policy,
2026
+ ) -> None:
2027
+ """Type checking stubs"""
2028
+ pass
2029
+
844
2030
  def _typecheckingstub__75931c57bc0ba240c98824ea65da9a0bc0a3bc48be2344ac7b70c03f259e632f(
845
2031
  scope: _constructs_77d1e7e8.Construct,
846
2032
  id: builtins.str,
@@ -859,6 +2045,52 @@ def _typecheckingstub__5f26b3314acb516329ef76511a5408ac87ae783446cab3f1be9ed1d0b
859
2045
  """Type checking stubs"""
860
2046
  pass
861
2047
 
2048
+ def _typecheckingstub__84f7bfe030fdaeee83dd169a4320aa71fb0e576e76fac8a6fb5e799d638df503(
2049
+ scope: _constructs_77d1e7e8.Construct,
2050
+ id: builtins.str,
2051
+ *,
2052
+ bucket: _aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef,
2053
+ recording_configuration_name: typing.Optional[builtins.str] = None,
2054
+ recording_reconnect_window: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2055
+ rendition_configuration: typing.Optional[RenditionConfiguration] = None,
2056
+ thumbnail_configuration: typing.Optional[ThumbnailConfiguration] = None,
2057
+ ) -> None:
2058
+ """Type checking stubs"""
2059
+ pass
2060
+
2061
+ def _typecheckingstub__5f6cbd063c6e695eed56d0c9c16dea95fe5f4b2a11e461c72cb33aa8d324e82d(
2062
+ scope: _constructs_77d1e7e8.Construct,
2063
+ id: builtins.str,
2064
+ recording_configuration_arn: builtins.str,
2065
+ ) -> None:
2066
+ """Type checking stubs"""
2067
+ pass
2068
+
2069
+ def _typecheckingstub__9c05eebd5485c91c16b38e6bf9c1d896abb2eee019bb8f0da1ec7fa25b69b0d8(
2070
+ scope: _constructs_77d1e7e8.Construct,
2071
+ id: builtins.str,
2072
+ recording_configuration_id: builtins.str,
2073
+ ) -> None:
2074
+ """Type checking stubs"""
2075
+ pass
2076
+
2077
+ def _typecheckingstub__21d80b5a61c717610ae7eec3eb729c41345980329354b0189415aab6624a4259(
2078
+ *,
2079
+ bucket: _aws_cdk_interfaces_aws_s3_ceddda9d.IBucketRef,
2080
+ recording_configuration_name: typing.Optional[builtins.str] = None,
2081
+ recording_reconnect_window: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2082
+ rendition_configuration: typing.Optional[RenditionConfiguration] = None,
2083
+ thumbnail_configuration: typing.Optional[ThumbnailConfiguration] = None,
2084
+ ) -> None:
2085
+ """Type checking stubs"""
2086
+ pass
2087
+
2088
+ def _typecheckingstub__72cbe17572adb3a1344760dd6061eca45611a877ad41668210371524b85d90da(
2089
+ renditions: typing.Sequence[Resolution],
2090
+ ) -> None:
2091
+ """Type checking stubs"""
2092
+ pass
2093
+
862
2094
  def _typecheckingstub__67fad0f56ffbc15680b0f651250d8bb5cf4dacb899e5c5bbf4abdcfc3ae39632(
863
2095
  scope: _constructs_77d1e7e8.Construct,
864
2096
  id: builtins.str,
@@ -875,13 +2107,26 @@ def _typecheckingstub__10474702d05a8d909166c4d0ef1de9632d82c17ae609436e3980c1bd4
875
2107
  """Type checking stubs"""
876
2108
  pass
877
2109
 
2110
+ def _typecheckingstub__7613b92b71ccf7e94fae8fd523b44fd066922450801fcef8848b59ff75f9eeb2(
2111
+ resolution: typing.Optional[Resolution] = None,
2112
+ storage: typing.Optional[typing.Sequence[Storage]] = None,
2113
+ target_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2114
+ ) -> None:
2115
+ """Type checking stubs"""
2116
+ pass
2117
+
878
2118
  def _typecheckingstub__07139327925dc97a551bbf17c849a0f698e0c9c60d3da3f65f2b3d2bea0e0c50(
879
2119
  scope: _constructs_77d1e7e8.Construct,
880
2120
  id: builtins.str,
881
2121
  *,
882
2122
  authorized: typing.Optional[builtins.bool] = None,
883
2123
  channel_name: typing.Optional[builtins.str] = None,
2124
+ container_format: typing.Optional[ContainerFormat] = None,
2125
+ insecure_ingest: typing.Optional[builtins.bool] = None,
884
2126
  latency_mode: typing.Optional[LatencyMode] = None,
2127
+ multitrack_input_configuration: typing.Optional[typing.Union[MultitrackInputConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2128
+ preset: typing.Optional[Preset] = None,
2129
+ recording_configuration: typing.Optional[IRecordingConfiguration] = None,
885
2130
  type: typing.Optional[ChannelType] = None,
886
2131
  ) -> None:
887
2132
  """Type checking stubs"""
@@ -900,3 +2145,6 @@ def _typecheckingstub__65e1f25de7c3a0e391031082a65ee02865e1f85fe29f43a74bbc59866
900
2145
  ) -> None:
901
2146
  """Type checking stubs"""
902
2147
  pass
2148
+
2149
+ for cls in [IChannel, IPlaybackKeyPair, IRecordingConfiguration, IStreamKey]:
2150
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])