Skip to content

Commit 22ff2bf

Browse files
author
awstools
committed
feat(client-ivs-realtime): IVS Real-Time now offers customers the ability to adjust the participant & composition recording segment duration
1 parent 615a9d9 commit 22ff2bf

File tree

8 files changed

+138
-6
lines changed

8 files changed

+138
-6
lines changed

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

+6
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
6565
* recordingMode: "INTERVAL" || "DISABLED",
6666
* },
6767
* recordingReconnectWindowSeconds: Number("int"),
68+
* hlsConfiguration: { // ParticipantRecordingHlsConfiguration
69+
* targetSegmentDurationSeconds: Number("int"),
70+
* },
6871
* },
6972
* };
7073
* const command = new CreateStageCommand(input);
@@ -90,6 +93,9 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
9093
* // recordingMode: "INTERVAL" || "DISABLED",
9194
* // },
9295
* // recordingReconnectWindowSeconds: Number("int"),
96+
* // hlsConfiguration: { // ParticipantRecordingHlsConfiguration
97+
* // targetSegmentDurationSeconds: Number("int"),
98+
* // },
9399
* // },
94100
* // endpoints: { // StageEndpoints
95101
* // events: "STRING_VALUE",

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

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ export interface GetCompositionCommandOutput extends GetCompositionResponse, __M
8484
* // "STRING_VALUE",
8585
* // ],
8686
* // recordingConfiguration: { // RecordingConfiguration
87+
* // hlsConfiguration: { // CompositionRecordingHlsConfiguration
88+
* // targetSegmentDurationSeconds: Number("int"),
89+
* // },
8790
* // format: "STRING_VALUE",
8891
* // },
8992
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList

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

+3
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare
6161
* // recordingMode: "INTERVAL" || "DISABLED",
6262
* // },
6363
* // recordingReconnectWindowSeconds: Number("int"),
64+
* // hlsConfiguration: { // ParticipantRecordingHlsConfiguration
65+
* // targetSegmentDurationSeconds: Number("int"),
66+
* // },
6467
* // },
6568
* // endpoints: { // StageEndpoints
6669
* // events: "STRING_VALUE",

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

+6
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
9595
* "STRING_VALUE",
9696
* ],
9797
* recordingConfiguration: { // RecordingConfiguration
98+
* hlsConfiguration: { // CompositionRecordingHlsConfiguration
99+
* targetSegmentDurationSeconds: Number("int"),
100+
* },
98101
* format: "STRING_VALUE",
99102
* },
100103
* thumbnailConfigurations: [ // CompositionThumbnailConfigurationList
@@ -158,6 +161,9 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse,
158161
* // "STRING_VALUE",
159162
* // ],
160163
* // recordingConfiguration: { // RecordingConfiguration
164+
* // hlsConfiguration: { // CompositionRecordingHlsConfiguration
165+
* // targetSegmentDurationSeconds: Number("int"),
166+
* // },
161167
* // format: "STRING_VALUE",
162168
* // },
163169
* // thumbnailConfigurations: [ // CompositionThumbnailConfigurationList

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

+6
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
5151
* recordingMode: "INTERVAL" || "DISABLED",
5252
* },
5353
* recordingReconnectWindowSeconds: Number("int"),
54+
* hlsConfiguration: { // ParticipantRecordingHlsConfiguration
55+
* targetSegmentDurationSeconds: Number("int"),
56+
* },
5457
* },
5558
* };
5659
* const command = new UpdateStageCommand(input);
@@ -76,6 +79,9 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
7679
* // recordingMode: "INTERVAL" || "DISABLED",
7780
* // },
7881
* // recordingReconnectWindowSeconds: Number("int"),
82+
* // hlsConfiguration: { // ParticipantRecordingHlsConfiguration
83+
* // targetSegmentDurationSeconds: Number("int"),
84+
* // },
7985
* // },
8086
* // endpoints: { // StageEndpoints
8187
* // events: "STRING_VALUE",

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

+41-5
Original file line numberDiff line numberDiff line change
@@ -988,6 +988,20 @@ export interface CreateParticipantTokenResponse {
988988
participantToken?: ParticipantToken | undefined;
989989
}
990990

991+
/**
992+
* <p>An object representing a configuration of participant HLS recordings for individual participant recording.</p>
993+
* @public
994+
*/
995+
export interface ParticipantRecordingHlsConfiguration {
996+
/**
997+
* <p>Defines the target duration for recorded segments generated when recording a stage participant.
998+
* Segments may have durations longer than the specified value when needed to ensure each segment begins with a keyframe.
999+
* Default: 6.</p>
1000+
* @public
1001+
*/
1002+
targetSegmentDurationSeconds?: number | undefined;
1003+
}
1004+
9911005
/**
9921006
* @public
9931007
* @enum
@@ -1100,6 +1114,12 @@ export interface AutoParticipantRecordingConfiguration {
11001114
* @public
11011115
*/
11021116
recordingReconnectWindowSeconds?: number | undefined;
1117+
1118+
/**
1119+
* <p>HLS configuration object for individual participant recording.</p>
1120+
* @public
1121+
*/
1122+
hlsConfiguration?: ParticipantRecordingHlsConfiguration | undefined;
11031123
}
11041124

11051125
/**
@@ -1517,11 +1537,31 @@ export const RecordingConfigurationFormat = {
15171537
export type RecordingConfigurationFormat =
15181538
(typeof RecordingConfigurationFormat)[keyof typeof RecordingConfigurationFormat];
15191539

1540+
/**
1541+
* <p>An object representing a configuration of HLS recordings for server-side composition.</p>
1542+
* @public
1543+
*/
1544+
export interface CompositionRecordingHlsConfiguration {
1545+
/**
1546+
* <p>Defines the target duration for recorded segments generated when using composite recording.
1547+
* Segments may have durations shorter than the specified value when needed to ensure each segment
1548+
* begins with a keyframe. Default: 2.</p>
1549+
* @public
1550+
*/
1551+
targetSegmentDurationSeconds?: number | undefined;
1552+
}
1553+
15201554
/**
15211555
* <p>An object representing a configuration to record a stage stream.</p>
15221556
* @public
15231557
*/
15241558
export interface RecordingConfiguration {
1559+
/**
1560+
* <p>An HLS configuration object to return information about how the recording will be configured.</p>
1561+
* @public
1562+
*/
1563+
hlsConfiguration?: CompositionRecordingHlsConfiguration | undefined;
1564+
15251565
/**
15261566
* <p>The recording format for storing a recording in Amazon S3.</p>
15271567
* @public
@@ -2209,11 +2249,7 @@ export interface Participant {
22092249
/**
22102250
* <p>S3 prefix of the S3 bucket where the participant is being recorded, if individual
22112251
* participant recording is enabled, or <code>""</code> (empty string), if recording is not
2212-
* enabled. If individual participant recording merge is enabled, and if a stage publisher
2213-
* disconnects from a stage and then reconnects, IVS tries to record to the same S3 prefix as
2214-
* the previous session. See
2215-
* <a href="/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html#ind-part-rec-merge-frag">
2216-
* Merge Fragmented Individual Participant Recordings</a>.</p>
2252+
* enabled.</p>
22172253
* @public
22182254
*/
22192255
recordingS3Prefix?: string | undefined;

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

+10
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ import {
120120
AutoParticipantRecordingConfiguration,
121121
ChannelDestinationConfiguration,
122122
Composition,
123+
CompositionRecordingHlsConfiguration,
123124
CompositionSummary,
124125
CompositionThumbnailConfiguration,
125126
ConflictException,
@@ -132,6 +133,7 @@ import {
132133
InternalServerException,
133134
LayoutConfiguration,
134135
Participant,
136+
ParticipantRecordingHlsConfiguration,
135137
ParticipantRecordingMediaType,
136138
ParticipantSummary,
137139
ParticipantThumbnailConfiguration,
@@ -1961,6 +1963,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont
19611963

19621964
// se_ChannelDestinationConfiguration omitted.
19631965

1966+
// se_CompositionRecordingHlsConfiguration omitted.
1967+
19641968
// se_CompositionThumbnailConfiguration omitted.
19651969

19661970
// se_CompositionThumbnailConfigurationList omitted.
@@ -1977,6 +1981,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont
19771981

19781982
// se_ParticipantAttributes omitted.
19791983

1984+
// se_ParticipantRecordingHlsConfiguration omitted.
1985+
19801986
// se_ParticipantRecordingMediaTypeList omitted.
19811987

19821988
// se_ParticipantThumbnailConfiguration omitted.
@@ -2033,6 +2039,8 @@ const de_Composition = (output: any, context: __SerdeContext): Composition => {
20332039
}) as any;
20342040
};
20352041

2042+
// de_CompositionRecordingHlsConfiguration omitted.
2043+
20362044
/**
20372045
* deserializeAws_restJson1CompositionSummary
20382046
*/
@@ -2209,6 +2217,8 @@ const de_ParticipantList = (output: any, context: __SerdeContext): ParticipantSu
22092217
return retVal;
22102218
};
22112219

2220+
// de_ParticipantRecordingHlsConfiguration omitted.
2221+
22122222
// de_ParticipantRecordingMediaTypeList omitted.
22132223

22142224
/**

codegen/sdk-codegen/aws-models/ivs-realtime.json

+63-1
Original file line numberDiff line numberDiff line change
@@ -923,6 +923,12 @@
923923
"smithy.api#default": 0,
924924
"smithy.api#documentation": "<p>If a stage publisher disconnects and then reconnects within the specified interval, \n\t the multiple recordings will be considered a single recording and merged together.</p>\n <p>The default value is 0, which disables merging.</p>"
925925
}
926+
},
927+
"hlsConfiguration": {
928+
"target": "com.amazonaws.ivsrealtime#ParticipantRecordingHlsConfiguration",
929+
"traits": {
930+
"smithy.api#documentation": "<p>HLS configuration object for individual participant recording.</p>"
931+
}
926932
}
927933
},
928934
"traits": {
@@ -1066,6 +1072,31 @@
10661072
"smithy.api#pattern": "^[a-zA-Z0-9-_]*$"
10671073
}
10681074
},
1075+
"com.amazonaws.ivsrealtime#CompositionRecordingHlsConfiguration": {
1076+
"type": "structure",
1077+
"members": {
1078+
"targetSegmentDurationSeconds": {
1079+
"target": "com.amazonaws.ivsrealtime#CompositionRecordingTargetSegmentDurationSeconds",
1080+
"traits": {
1081+
"smithy.api#default": null,
1082+
"smithy.api#documentation": "<p>Defines the target duration for recorded segments generated when using composite recording. \n\t Segments may have durations shorter than the specified value when needed to ensure each segment \n\t begins with a keyframe. Default: 2.</p>"
1083+
}
1084+
}
1085+
},
1086+
"traits": {
1087+
"smithy.api#documentation": "<p>An object representing a configuration of HLS recordings for server-side composition.</p>"
1088+
}
1089+
},
1090+
"com.amazonaws.ivsrealtime#CompositionRecordingTargetSegmentDurationSeconds": {
1091+
"type": "integer",
1092+
"traits": {
1093+
"smithy.api#default": 2,
1094+
"smithy.api#range": {
1095+
"min": 2,
1096+
"max": 10
1097+
}
1098+
}
1099+
},
10691100
"com.amazonaws.ivsrealtime#CompositionState": {
10701101
"type": "string",
10711102
"traits": {
@@ -4419,7 +4450,7 @@
44194450
"recordingS3Prefix": {
44204451
"target": "com.amazonaws.ivsrealtime#ParticipantRecordingS3Prefix",
44214452
"traits": {
4422-
"smithy.api#documentation": "<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual\n participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not\n enabled. If individual participant recording merge is enabled, and if a stage publisher \n\t\t disconnects from a stage and then reconnects, IVS tries to record to the same S3 prefix as \n\t\t the previous session. See \n\t\t <a href=\"/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html#ind-part-rec-merge-frag\">\n\t\t Merge Fragmented Individual Participant Recordings</a>.</p>"
4453+
"smithy.api#documentation": "<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual\n participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not\n enabled.</p>"
44234454
}
44244455
},
44254456
"recordingState": {
@@ -4530,6 +4561,21 @@
45304561
]
45314562
}
45324563
},
4564+
"com.amazonaws.ivsrealtime#ParticipantRecordingHlsConfiguration": {
4565+
"type": "structure",
4566+
"members": {
4567+
"targetSegmentDurationSeconds": {
4568+
"target": "com.amazonaws.ivsrealtime#ParticipantRecordingTargetSegmentDurationSeconds",
4569+
"traits": {
4570+
"smithy.api#default": null,
4571+
"smithy.api#documentation": "<p>Defines the target duration for recorded segments generated when recording a stage participant. \n\t Segments may have durations longer than the specified value when needed to ensure each segment begins with a keyframe. \n\t Default: 6.</p>"
4572+
}
4573+
}
4574+
},
4575+
"traits": {
4576+
"smithy.api#documentation": "<p>An object representing a configuration of participant HLS recordings for individual participant recording.</p>"
4577+
}
4578+
},
45334579
"com.amazonaws.ivsrealtime#ParticipantRecordingMediaType": {
45344580
"type": "enum",
45354581
"members": {
@@ -4626,6 +4672,16 @@
46264672
]
46274673
}
46284674
},
4675+
"com.amazonaws.ivsrealtime#ParticipantRecordingTargetSegmentDurationSeconds": {
4676+
"type": "integer",
4677+
"traits": {
4678+
"smithy.api#default": 6,
4679+
"smithy.api#range": {
4680+
"min": 2,
4681+
"max": 10
4682+
}
4683+
}
4684+
},
46294685
"com.amazonaws.ivsrealtime#ParticipantState": {
46304686
"type": "string",
46314687
"traits": {
@@ -5203,6 +5259,12 @@
52035259
"com.amazonaws.ivsrealtime#RecordingConfiguration": {
52045260
"type": "structure",
52055261
"members": {
5262+
"hlsConfiguration": {
5263+
"target": "com.amazonaws.ivsrealtime#CompositionRecordingHlsConfiguration",
5264+
"traits": {
5265+
"smithy.api#documentation": "<p>An HLS configuration object to return information about how the recording will be configured.</p>"
5266+
}
5267+
},
52065268
"format": {
52075269
"target": "com.amazonaws.ivsrealtime#RecordingConfigurationFormat",
52085270
"traits": {

0 commit comments

Comments
 (0)