Skip to content

Commit

Permalink
feat(client-ivs-realtime): IVS Real-Time now offers customers the abi…
Browse files Browse the repository at this point in the history
…lity to customize thumbnails recording mode and interval for both Individual Participant Recording (IPR) and Server-Side Compositions (SSC).
  • Loading branch information
awstools committed Dec 10, 2024
1 parent 8f9a63c commit e9f436e
Show file tree
Hide file tree
Showing 8 changed files with 323 additions and 16 deletions.
18 changes: 16 additions & 2 deletions clients/client-ivs-realtime/src/commands/CreateStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,15 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* storageConfigurationArn: "STRING_VALUE", // required
* mediaTypes: [ // ParticipantRecordingMediaTypeList
* "STRING_VALUE",
* "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
* ],
* thumbnailConfiguration: { // ParticipantThumbnailConfiguration
* targetIntervalSeconds: Number("int"),
* storage: [ // ThumbnailStorageTypeList
* "SEQUENTIAL" || "LATEST",
* ],
* recordingMode: "INTERVAL" || "DISABLED",
* },
* },
* };
* const command = new CreateStageCommand(input);
Expand All @@ -72,8 +79,15 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
* // ],
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
* // targetIntervalSeconds: Number("int"),
* // storage: [ // ThumbnailStorageTypeList
* // "SEQUENTIAL" || "LATEST",
* // ],
* // recordingMode: "INTERVAL" || "DISABLED",
* // },
* // },
* // endpoints: { // StageEndpoints
* // events: "STRING_VALUE",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,14 @@ export interface GetCompositionCommandOutput extends GetCompositionResponse, __M
* // recordingConfiguration: { // RecordingConfiguration
* // format: "STRING_VALUE",
* // },
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
* // { // CompositionThumbnailConfiguration
* // targetIntervalSeconds: Number("int"),
* // storage: [ // ThumbnailStorageTypeList
* // "SEQUENTIAL" || "LATEST",
* // ],
* // },
* // ],
* // },
* // },
* // detail: { // DestinationDetail
Expand Down
9 changes: 8 additions & 1 deletion clients/client-ivs-realtime/src/commands/GetStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,15 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
* // ],
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
* // targetIntervalSeconds: Number("int"),
* // storage: [ // ThumbnailStorageTypeList
* // "SEQUENTIAL" || "LATEST",
* // ],
* // recordingMode: "INTERVAL" || "DISABLED",
* // },
* // },
* // endpoints: { // StageEndpoints
* // events: "STRING_VALUE",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
* recordingConfiguration: { // RecordingConfiguration
* format: "STRING_VALUE",
* },
* thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
* { // CompositionThumbnailConfiguration
* targetIntervalSeconds: Number("int"),
* storage: [ // ThumbnailStorageTypeList
* "SEQUENTIAL" || "LATEST",
* ],
* },
* ],
* },
* },
* ],
Expand Down Expand Up @@ -152,6 +160,14 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
* // recordingConfiguration: { // RecordingConfiguration
* // format: "STRING_VALUE",
* // },
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
* // { // CompositionThumbnailConfiguration
* // targetIntervalSeconds: Number("int"),
* // storage: [ // ThumbnailStorageTypeList
* // "SEQUENTIAL" || "LATEST",
* // ],
* // },
* // ],
* // },
* // },
* // detail: { // DestinationDetail
Expand Down
18 changes: 16 additions & 2 deletions clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,15 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* storageConfigurationArn: "STRING_VALUE", // required
* mediaTypes: [ // ParticipantRecordingMediaTypeList
* "STRING_VALUE",
* "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
* ],
* thumbnailConfiguration: { // ParticipantThumbnailConfiguration
* targetIntervalSeconds: Number("int"),
* storage: [ // ThumbnailStorageTypeList
* "SEQUENTIAL" || "LATEST",
* ],
* recordingMode: "INTERVAL" || "DISABLED",
* },
* },
* };
* const command = new UpdateStageCommand(input);
Expand All @@ -58,8 +65,15 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // "AUDIO_VIDEO" || "AUDIO_ONLY" || "NONE",
* // ],
* // thumbnailConfiguration: { // ParticipantThumbnailConfiguration
* // targetIntervalSeconds: Number("int"),
* // storage: [ // ThumbnailStorageTypeList
* // "SEQUENTIAL" || "LATEST",
* // ],
* // recordingMode: "INTERVAL" || "DISABLED",
* // },
* // },
* // endpoints: { // StageEndpoints
* // events: "STRING_VALUE",
Expand Down
95 changes: 95 additions & 0 deletions clients/client-ivs-realtime/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,7 @@ export interface CreateParticipantTokenResponse {
export const ParticipantRecordingMediaType = {
AUDIO_ONLY: "AUDIO_ONLY",
AUDIO_VIDEO: "AUDIO_VIDEO",
NONE: "NONE",
} as const;

/**
Expand All @@ -601,6 +602,63 @@ export const ParticipantRecordingMediaType = {
export type ParticipantRecordingMediaType =
(typeof ParticipantRecordingMediaType)[keyof typeof ParticipantRecordingMediaType];

/**
* @public
* @enum
*/
export const ThumbnailRecordingMode = {
DISABLED: "DISABLED",
INTERVAL: "INTERVAL",
} as const;

/**
* @public
*/
export type ThumbnailRecordingMode = (typeof ThumbnailRecordingMode)[keyof typeof ThumbnailRecordingMode];

/**
* @public
* @enum
*/
export const ThumbnailStorageType = {
LATEST: "LATEST",
SEQUENTIAL: "SEQUENTIAL",
} as const;

/**
* @public
*/
export type ThumbnailStorageType = (typeof ThumbnailStorageType)[keyof typeof ThumbnailStorageType];

/**
* <p>An object representing a configuration of thumbnails for recorded video from an individual participant.</p>
* @public
*/
export interface ParticipantThumbnailConfiguration {
/**
* <p>The targeted thumbnail-generation interval in seconds. This is configurable only if
* <code>recordingMode</code> is <code>INTERVAL</code>. Default: 60.</p>
* @public
*/
targetIntervalSeconds?: number | undefined;

/**
* <p>Indicates the format in which thumbnails are recorded. <code>SEQUENTIAL</code> records all generated thumbnails
* in a serial manner, to the media/thumbnails/high directory. <code>LATEST</code> saves the latest thumbnail
* in media/latest_thumbnail/high/thumb.jpg and overwrites it at the interval specified by
* <code>targetIntervalSeconds</code>. You can enable both <code>SEQUENTIAL</code> and <code>LATEST</code>.
* Default: <code>SEQUENTIAL</code>.</p>
* @public
*/
storage?: ThumbnailStorageType[] | undefined;

/**
* <p>Thumbnail recording mode. Default: <code>DISABLED</code>.</p>
* @public
*/
recordingMode?: ThumbnailRecordingMode | undefined;
}

/**
* <p>Object specifying a configuration for individual participant recording.</p>
* @public
Expand All @@ -617,6 +675,13 @@ export interface AutoParticipantRecordingConfiguration {
* @public
*/
mediaTypes?: ParticipantRecordingMediaType[] | undefined;

/**
* <p>A complex type that allows you to enable/disable the recording of thumbnails for individual participant recording
* and modify the interval at which thumbnails are generated for the live session.</p>
* @public
*/
thumbnailConfiguration?: ParticipantThumbnailConfiguration | undefined;
}

/**
Expand Down Expand Up @@ -1043,6 +1108,29 @@ export interface RecordingConfiguration {
format?: RecordingConfigurationFormat | undefined;
}

/**
* <p>An object representing a configuration of thumbnails for recorded video for a <a>Composition</a>.</p>
* @public
*/
export interface CompositionThumbnailConfiguration {
/**
* <p>The targeted thumbnail-generation interval in seconds. Default: 60.</p>
* @public
*/
targetIntervalSeconds?: number | undefined;

/**
* <p>Indicates the format in which thumbnails are recorded. <code>SEQUENTIAL</code> records all generated thumbnails
* in a serial manner, to the media/thumbnails/(width)x(height) directory, where (width) and (height) are the width
* and height of the thumbnail. <code>LATEST</code> saves the latest thumbnail in
* media/latest_thumbnail/(width)x(height)/thumb.jpg and overwrites it at the interval specified by
* <code>targetIntervalSeconds</code>. You can enable both <code>SEQUENTIAL</code> and <code>LATEST</code>.
* Default: <code>SEQUENTIAL</code>.</p>
* @public
*/
storage?: ThumbnailStorageType[] | undefined;
}

/**
* <p>A complex type that describes an S3 location where recorded videos will be stored.</p>
* @public
Expand All @@ -1068,6 +1156,13 @@ export interface S3DestinationConfiguration {
* @public
*/
recordingConfiguration?: RecordingConfiguration | undefined;

/**
* <p>A complex type that allows you to enable/disable the recording of thumbnails for a <a>Composition</a>
* and modify the interval at which thumbnails are generated for the live session.</p>
* @public
*/
thumbnailConfigurations?: CompositionThumbnailConfiguration[] | undefined;
}

/**
Expand Down
19 changes: 19 additions & 0 deletions clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ import {
ChannelDestinationConfiguration,
Composition,
CompositionSummary,
CompositionThumbnailConfiguration,
ConflictException,
Destination,
DestinationConfiguration,
Expand All @@ -133,6 +134,7 @@ import {
Participant,
ParticipantRecordingMediaType,
ParticipantSummary,
ParticipantThumbnailConfiguration,
ParticipantToken,
ParticipantTokenCapability,
ParticipantTokenConfiguration,
Expand All @@ -145,6 +147,7 @@ import {
ServiceQuotaExceededException,
StageSession,
StageSessionSummary,
ThumbnailStorageType,
ValidationException,
Video,
} from "../models/models_0";
Expand Down Expand Up @@ -1895,6 +1898,10 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont

// se_ChannelDestinationConfiguration omitted.

// se_CompositionThumbnailConfiguration omitted.

// se_CompositionThumbnailConfigurationList omitted.

// se_DestinationConfiguration omitted.

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

// se_ParticipantRecordingMediaTypeList omitted.

// se_ParticipantThumbnailConfiguration omitted.

// se_ParticipantTokenAttributes omitted.

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

// se_Tags omitted.

// se_ThumbnailStorageTypeList omitted.

/**
* serializeAws_restJson1Video
*/
Expand Down Expand Up @@ -1986,6 +1997,10 @@ const de_CompositionSummaryList = (output: any, context: __SerdeContext): Compos
return retVal;
};

// de_CompositionThumbnailConfiguration omitted.

// de_CompositionThumbnailConfigurationList omitted.

/**
* deserializeAws_restJson1Destination
*/
Expand Down Expand Up @@ -2147,6 +2162,8 @@ const de_ParticipantSummary = (output: any, context: __SerdeContext): Participan
}) as any;
};

// de_ParticipantThumbnailConfiguration omitted.

/**
* deserializeAws_restJson1ParticipantToken
*/
Expand Down Expand Up @@ -2244,6 +2261,8 @@ const de_StageSessionSummary = (output: any, context: __SerdeContext): StageSess

// de_Tags omitted.

// de_ThumbnailStorageTypeList omitted.

/**
* deserializeAws_restJson1Video
*/
Expand Down
Loading

0 comments on commit e9f436e

Please sign in to comment.