Skip to content

Commit e9f436e

Browse files
author
awstools
committed
feat(client-ivs-realtime): IVS Real-Time now offers customers the ability to customize thumbnails recording mode and interval for both Individual Participant Recording (IPR) and Server-Side Compositions (SSC).
1 parent 8f9a63c commit e9f436e

File tree

8 files changed

+323
-16
lines changed

8 files changed

+323
-16
lines changed

clients/client-ivs-realtime/src/commands/CreateStageCommand.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,15 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
5555
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
5656
* storageConfigurationArn: "STRING_VALUE", // required
5757
* mediaTypes: [ // ParticipantRecordingMediaTypeList
58-
* "STRING_VALUE",
58+
* "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
5959
* ],
60+
* thumbnailConfiguration: { // ParticipantThumbnailConfiguration
61+
* targetIntervalSeconds: Number("int"),
62+
* storage: [ // ThumbnailStorageTypeList
63+
* "SEQUENTIAL" || "LATEST",
64+
* ],
65+
* recordingMode: "INTERVAL" || "DISABLED",
66+
* },
6067
* },
6168
* };
6269
* const command = new CreateStageCommand(input);
@@ -72,8 +79,15 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
7279
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
7380
* // storageConfigurationArn: "STRING_VALUE", // required
7481
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
75-
* // "STRING_VALUE",
82+
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
7683
* // ],
84+
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
85+
* // targetIntervalSeconds: Number("int"),
86+
* // storage: [ // ThumbnailStorageTypeList
87+
* // "SEQUENTIAL" || "LATEST",
88+
* // ],
89+
* // recordingMode: "INTERVAL" || "DISABLED",
90+
* // },
7791
* // },
7892
* // endpoints: { // StageEndpoints
7993
* // events: "STRING_VALUE",

clients/client-ivs-realtime/src/commands/GetCompositionCommand.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ export interface GetCompositionCommandOutput extends GetCompositionResponse, __M
8686
* // recordingConfiguration: { // RecordingConfiguration
8787
* // format: "STRING_VALUE",
8888
* // },
89+
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
90+
* // { // CompositionThumbnailConfiguration
91+
* // targetIntervalSeconds: Number("int"),
92+
* // storage: [ // ThumbnailStorageTypeList
93+
* // "SEQUENTIAL" || "LATEST",
94+
* // ],
95+
* // },
96+
* // ],
8997
* // },
9098
* // },
9199
* // detail: { // DestinationDetail

clients/client-ivs-realtime/src/commands/GetStageCommand.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,15 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare
5151
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
5252
* // storageConfigurationArn: "STRING_VALUE", // required
5353
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
54-
* // "STRING_VALUE",
54+
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
5555
* // ],
56+
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
57+
* // targetIntervalSeconds: Number("int"),
58+
* // storage: [ // ThumbnailStorageTypeList
59+
* // "SEQUENTIAL" || "LATEST",
60+
* // ],
61+
* // recordingMode: "INTERVAL" || "DISABLED",
62+
* // },
5663
* // },
5764
* // endpoints: { // StageEndpoints
5865
* // events: "STRING_VALUE",

clients/client-ivs-realtime/src/commands/StartCompositionCommand.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
9797
* recordingConfiguration: { // RecordingConfiguration
9898
* format: "STRING_VALUE",
9999
* },
100+
* thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
101+
* { // CompositionThumbnailConfiguration
102+
* targetIntervalSeconds: Number("int"),
103+
* storage: [ // ThumbnailStorageTypeList
104+
* "SEQUENTIAL" || "LATEST",
105+
* ],
106+
* },
107+
* ],
100108
* },
101109
* },
102110
* ],
@@ -152,6 +160,14 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
152160
* // recordingConfiguration: { // RecordingConfiguration
153161
* // format: "STRING_VALUE",
154162
* // },
163+
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
164+
* // { // CompositionThumbnailConfiguration
165+
* // targetIntervalSeconds: Number("int"),
166+
* // storage: [ // ThumbnailStorageTypeList
167+
* // "SEQUENTIAL" || "LATEST",
168+
* // ],
169+
* // },
170+
* // ],
155171
* // },
156172
* // },
157173
* // detail: { // DestinationDetail

clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,15 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
4141
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
4242
* storageConfigurationArn: "STRING_VALUE", // required
4343
* mediaTypes: [ // ParticipantRecordingMediaTypeList
44-
* "STRING_VALUE",
44+
* "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
4545
* ],
46+
* thumbnailConfiguration: { // ParticipantThumbnailConfiguration
47+
* targetIntervalSeconds: Number("int"),
48+
* storage: [ // ThumbnailStorageTypeList
49+
* "SEQUENTIAL" || "LATEST",
50+
* ],
51+
* recordingMode: "INTERVAL" || "DISABLED",
52+
* },
4653
* },
4754
* };
4855
* const command = new UpdateStageCommand(input);
@@ -58,8 +65,15 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
5865
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
5966
* // storageConfigurationArn: "STRING_VALUE", // required
6067
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
61-
* // "STRING_VALUE",
68+
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
6269
* // ],
70+
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
71+
* // targetIntervalSeconds: Number("int"),
72+
* // storage: [ // ThumbnailStorageTypeList
73+
* // "SEQUENTIAL" || "LATEST",
74+
* // ],
75+
* // recordingMode: "INTERVAL" || "DISABLED",
76+
* // },
6377
* // },
6478
* // endpoints: { // StageEndpoints
6579
* // events: "STRING_VALUE",

clients/client-ivs-realtime/src/models/models_0.ts

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,7 @@ export interface CreateParticipantTokenResponse {
593593
export const ParticipantRecordingMediaType = {
594594
AUDIO_ONLY: "AUDIO_ONLY",
595595
AUDIO_VIDEO: "AUDIO_VIDEO",
596+
NONE: "NONE",
596597
} as const;
597598

598599
/**
@@ -601,6 +602,63 @@ export const ParticipantRecordingMediaType = {
601602
export type ParticipantRecordingMediaType =
602603
(typeof ParticipantRecordingMediaType)[keyof typeof ParticipantRecordingMediaType];
603604

605+
/**
606+
* @public
607+
* @enum
608+
*/
609+
export const ThumbnailRecordingMode = {
610+
DISABLED: "DISABLED",
611+
INTERVAL: "INTERVAL",
612+
} as const;
613+
614+
/**
615+
* @public
616+
*/
617+
export type ThumbnailRecordingMode = (typeof ThumbnailRecordingMode)[keyof typeof ThumbnailRecordingMode];
618+
619+
/**
620+
* @public
621+
* @enum
622+
*/
623+
export const ThumbnailStorageType = {
624+
LATEST: "LATEST",
625+
SEQUENTIAL: "SEQUENTIAL",
626+
} as const;
627+
628+
/**
629+
* @public
630+
*/
631+
export type ThumbnailStorageType = (typeof ThumbnailStorageType)[keyof typeof ThumbnailStorageType];
632+
633+
/**
634+
* <p>An object representing a configuration of thumbnails for recorded video from an individual participant.</p>
635+
* @public
636+
*/
637+
export interface ParticipantThumbnailConfiguration {
638+
/**
639+
* <p>The targeted thumbnail-generation interval in seconds. This is configurable only if
640+
* <code>recordingMode</code> is <code>INTERVAL</code>. Default: 60.</p>
641+
* @public
642+
*/
643+
targetIntervalSeconds?: number | undefined;
644+
645+
/**
646+
* <p>Indicates the format in which thumbnails are recorded. <code>SEQUENTIAL</code> records all generated thumbnails
647+
* in a serial manner, to the media/thumbnails/high directory. <code>LATEST</code> saves the latest thumbnail
648+
* in media/latest_thumbnail/high/thumb.jpg and overwrites it at the interval specified by
649+
* <code>targetIntervalSeconds</code>. You can enable both <code>SEQUENTIAL</code> and <code>LATEST</code>.
650+
* Default: <code>SEQUENTIAL</code>.</p>
651+
* @public
652+
*/
653+
storage?: ThumbnailStorageType[] | undefined;
654+
655+
/**
656+
* <p>Thumbnail recording mode. Default: <code>DISABLED</code>.</p>
657+
* @public
658+
*/
659+
recordingMode?: ThumbnailRecordingMode | undefined;
660+
}
661+
604662
/**
605663
* <p>Object specifying a configuration for individual participant recording.</p>
606664
* @public
@@ -617,6 +675,13 @@ export interface AutoParticipantRecordingConfiguration {
617675
* @public
618676
*/
619677
mediaTypes?: ParticipantRecordingMediaType[] | undefined;
678+
679+
/**
680+
* <p>A complex type that allows you to enable/disable the recording of thumbnails for individual participant recording
681+
* and modify the interval at which thumbnails are generated for the live session.</p>
682+
* @public
683+
*/
684+
thumbnailConfiguration?: ParticipantThumbnailConfiguration | undefined;
620685
}
621686

622687
/**
@@ -1043,6 +1108,29 @@ export interface RecordingConfiguration {
10431108
format?: RecordingConfigurationFormat | undefined;
10441109
}
10451110

1111+
/**
1112+
* <p>An object representing a configuration of thumbnails for recorded video for a <a>Composition</a>.</p>
1113+
* @public
1114+
*/
1115+
export interface CompositionThumbnailConfiguration {
1116+
/**
1117+
* <p>The targeted thumbnail-generation interval in seconds. Default: 60.</p>
1118+
* @public
1119+
*/
1120+
targetIntervalSeconds?: number | undefined;
1121+
1122+
/**
1123+
* <p>Indicates the format in which thumbnails are recorded. <code>SEQUENTIAL</code> records all generated thumbnails
1124+
* in a serial manner, to the media/thumbnails/(width)x(height) directory, where (width) and (height) are the width
1125+
* and height of the thumbnail. <code>LATEST</code> saves the latest thumbnail in
1126+
* media/latest_thumbnail/(width)x(height)/thumb.jpg and overwrites it at the interval specified by
1127+
* <code>targetIntervalSeconds</code>. You can enable both <code>SEQUENTIAL</code> and <code>LATEST</code>.
1128+
* Default: <code>SEQUENTIAL</code>.</p>
1129+
* @public
1130+
*/
1131+
storage?: ThumbnailStorageType[] | undefined;
1132+
}
1133+
10461134
/**
10471135
* <p>A complex type that describes an S3 location where recorded videos will be stored.</p>
10481136
* @public
@@ -1068,6 +1156,13 @@ export interface S3DestinationConfiguration {
10681156
* @public
10691157
*/
10701158
recordingConfiguration?: RecordingConfiguration | undefined;
1159+
1160+
/**
1161+
* <p>A complex type that allows you to enable/disable the recording of thumbnails for a <a>Composition</a>
1162+
* and modify the interval at which thumbnails are generated for the live session.</p>
1163+
* @public
1164+
*/
1165+
thumbnailConfigurations?: CompositionThumbnailConfiguration[] | undefined;
10711166
}
10721167

10731168
/**

clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ import {
121121
ChannelDestinationConfiguration,
122122
Composition,
123123
CompositionSummary,
124+
CompositionThumbnailConfiguration,
124125
ConflictException,
125126
Destination,
126127
DestinationConfiguration,
@@ -133,6 +134,7 @@ import {
133134
Participant,
134135
ParticipantRecordingMediaType,
135136
ParticipantSummary,
137+
ParticipantThumbnailConfiguration,
136138
ParticipantToken,
137139
ParticipantTokenCapability,
138140
ParticipantTokenConfiguration,
@@ -145,6 +147,7 @@ import {
145147
ServiceQuotaExceededException,
146148
StageSession,
147149
StageSessionSummary,
150+
ThumbnailStorageType,
148151
ValidationException,
149152
Video,
150153
} from "../models/models_0";
@@ -1895,6 +1898,10 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont
18951898

18961899
// se_ChannelDestinationConfiguration omitted.
18971900

1901+
// se_CompositionThumbnailConfiguration omitted.
1902+
1903+
// se_CompositionThumbnailConfigurationList omitted.
1904+
18981905
// se_DestinationConfiguration omitted.
18991906

19001907
// se_DestinationConfigurationList omitted.
@@ -1909,6 +1916,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont
19091916

19101917
// se_ParticipantRecordingMediaTypeList omitted.
19111918

1919+
// se_ParticipantThumbnailConfiguration omitted.
1920+
19121921
// se_ParticipantTokenAttributes omitted.
19131922

19141923
// se_ParticipantTokenCapabilities omitted.
@@ -1927,6 +1936,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont
19271936

19281937
// se_Tags omitted.
19291938

1939+
// se_ThumbnailStorageTypeList omitted.
1940+
19301941
/**
19311942
* serializeAws_restJson1Video
19321943
*/
@@ -1986,6 +1997,10 @@ const de_CompositionSummaryList = (output: any, context: __SerdeContext): Compos
19861997
return retVal;
19871998
};
19881999

2000+
// de_CompositionThumbnailConfiguration omitted.
2001+
2002+
// de_CompositionThumbnailConfigurationList omitted.
2003+
19892004
/**
19902005
* deserializeAws_restJson1Destination
19912006
*/
@@ -2147,6 +2162,8 @@ const de_ParticipantSummary = (output: any, context: __SerdeContext): Participan
21472162
}) as any;
21482163
};
21492164

2165+
// de_ParticipantThumbnailConfiguration omitted.
2166+
21502167
/**
21512168
* deserializeAws_restJson1ParticipantToken
21522169
*/
@@ -2244,6 +2261,8 @@ const de_StageSessionSummary = (output: any, context: __SerdeContext): StageSess
22442261

22452262
// de_Tags omitted.
22462263

2264+
// de_ThumbnailStorageTypeList omitted.
2265+
22472266
/**
22482267
* deserializeAws_restJson1Video
22492268
*/

0 commit comments

Comments
 (0)