Skip to content

Commit 0fbcfa8

Browse files
IVS Real-Time now offers customers the ability to adjust the participant & composition recording segment duration
1 parent ca757b7 commit 0fbcfa8

17 files changed

+616
-7
lines changed

generator/ServiceModels/ivs-realtime/ivs-realtime-2020-07-14.api.json

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,8 @@
670670
"storageConfigurationArn":{"shape":"AutoParticipantRecordingStorageConfigurationArn"},
671671
"mediaTypes":{"shape":"ParticipantRecordingMediaTypeList"},
672672
"thumbnailConfiguration":{"shape":"ParticipantThumbnailConfiguration"},
673-
"recordingReconnectWindowSeconds":{"shape":"ParticipantRecordingReconnectWindowSeconds"}
673+
"recordingReconnectWindowSeconds":{"shape":"ParticipantRecordingReconnectWindowSeconds"},
674+
"hlsConfiguration":{"shape":"ParticipantRecordingHlsConfiguration"}
674675
}
675676
},
676677
"AutoParticipantRecordingStorageConfigurationArn":{
@@ -732,6 +733,18 @@
732733
"min":1,
733734
"pattern":"[a-zA-Z0-9-_]*"
734735
},
736+
"CompositionRecordingHlsConfiguration":{
737+
"type":"structure",
738+
"members":{
739+
"targetSegmentDurationSeconds":{"shape":"CompositionRecordingTargetSegmentDurationSeconds"}
740+
}
741+
},
742+
"CompositionRecordingTargetSegmentDurationSeconds":{
743+
"type":"integer",
744+
"box":true,
745+
"max":10,
746+
"min":2
747+
},
735748
"CompositionState":{
736749
"type":"string",
737750
"enum":[
@@ -1747,6 +1760,12 @@
17471760
"FAILED"
17481761
]
17491762
},
1763+
"ParticipantRecordingHlsConfiguration":{
1764+
"type":"structure",
1765+
"members":{
1766+
"targetSegmentDurationSeconds":{"shape":"ParticipantRecordingTargetSegmentDurationSeconds"}
1767+
}
1768+
},
17501769
"ParticipantRecordingMediaType":{
17511770
"type":"string",
17521771
"enum":[
@@ -1789,6 +1808,12 @@
17891808
"DISABLED"
17901809
]
17911810
},
1811+
"ParticipantRecordingTargetSegmentDurationSeconds":{
1812+
"type":"integer",
1813+
"box":true,
1814+
"max":10,
1815+
"min":2
1816+
},
17921817
"ParticipantState":{
17931818
"type":"string",
17941819
"enum":[
@@ -2023,6 +2048,7 @@
20232048
"RecordingConfiguration":{
20242049
"type":"structure",
20252050
"members":{
2051+
"hlsConfiguration":{"shape":"CompositionRecordingHlsConfiguration"},
20262052
"format":{"shape":"RecordingConfigurationFormat"}
20272053
}
20282054
},

generator/ServiceModels/ivs-realtime/ivs-realtime-2020-07-14.docs.json

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@
113113
"StartCompositionRequest$idempotencyToken": "<p>Idempotency token.</p>"
114114
}
115115
},
116+
"CompositionRecordingHlsConfiguration": {
117+
"base": "<p>An object representing a configuration of HLS recordings for server-side composition.</p>",
118+
"refs": {
119+
"RecordingConfiguration$hlsConfiguration": "<p>An HLS configuration object to return information about how the recording will be configured.</p>"
120+
}
121+
},
122+
"CompositionRecordingTargetSegmentDurationSeconds": {
123+
"base": null,
124+
"refs": {
125+
"CompositionRecordingHlsConfiguration$targetSegmentDurationSeconds": "<p>Defines the target duration for recorded segments generated when using composite recording. Segments may have durations shorter than the specified value when needed to ensure each segment begins with a keyframe. Default: 2.</p>"
126+
}
127+
},
116128
"CompositionState": {
117129
"base": null,
118130
"refs": {
@@ -826,6 +838,12 @@
826838
"ListParticipantsRequest$filterByRecordingState": "<p>Filters the response list to only show participants with the specified recording state. Only one of <code>filterByUserId</code>, <code>filterByPublished</code>, <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>"
827839
}
828840
},
841+
"ParticipantRecordingHlsConfiguration": {
842+
"base": "<p>An object representing a configuration of participant HLS recordings for individual participant recording.</p>",
843+
"refs": {
844+
"AutoParticipantRecordingConfiguration$hlsConfiguration": "<p>HLS configuration object for individual participant recording.</p>"
845+
}
846+
},
829847
"ParticipantRecordingMediaType": {
830848
"base": null,
831849
"refs": {
@@ -853,7 +871,7 @@
853871
"ParticipantRecordingS3Prefix": {
854872
"base": null,
855873
"refs": {
856-
"Participant$recordingS3Prefix": "<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not enabled. If individual participant recording merge is enabled, and if a stage publisher disconnects from a stage and then reconnects, IVS tries to record to the same S3 prefix as the previous session. See <a href=\"/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html#ind-part-rec-merge-frag\"> Merge Fragmented Individual Participant Recordings</a>.</p>"
874+
"Participant$recordingS3Prefix": "<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not enabled.</p>"
857875
}
858876
},
859877
"ParticipantRecordingState": {
@@ -863,6 +881,12 @@
863881
"ParticipantSummary$recordingState": "<p>The participant’s recording state.</p>"
864882
}
865883
},
884+
"ParticipantRecordingTargetSegmentDurationSeconds": {
885+
"base": null,
886+
"refs": {
887+
"ParticipantRecordingHlsConfiguration$targetSegmentDurationSeconds": "<p>Defines the target duration for recorded segments generated when recording a stage participant. Segments may have durations longer than the specified value when needed to ensure each segment begins with a keyframe. Default: 6.</p>"
888+
}
889+
},
866890
"ParticipantState": {
867891
"base": null,
868892
"refs": {

generator/ServiceModels/ivs-realtime/ivs-realtime-2020-07-14.normal.json

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,10 @@
730730
"recordingReconnectWindowSeconds":{
731731
"shape":"ParticipantRecordingReconnectWindowSeconds",
732732
"documentation":"<p>If a stage publisher disconnects and then reconnects within the specified interval, the multiple recordings will be considered a single recording and merged together.</p> <p>The default value is 0, which disables merging.</p>"
733+
},
734+
"hlsConfiguration":{
735+
"shape":"ParticipantRecordingHlsConfiguration",
736+
"documentation":"<p>HLS configuration object for individual participant recording.</p>"
733737
}
734738
},
735739
"documentation":"<p>Object specifying a configuration for individual participant recording.</p>"
@@ -825,6 +829,22 @@
825829
"min":1,
826830
"pattern":"[a-zA-Z0-9-_]*"
827831
},
832+
"CompositionRecordingHlsConfiguration":{
833+
"type":"structure",
834+
"members":{
835+
"targetSegmentDurationSeconds":{
836+
"shape":"CompositionRecordingTargetSegmentDurationSeconds",
837+
"documentation":"<p>Defines the target duration for recorded segments generated when using composite recording. Segments may have durations shorter than the specified value when needed to ensure each segment begins with a keyframe. Default: 2.</p>"
838+
}
839+
},
840+
"documentation":"<p>An object representing a configuration of HLS recordings for server-side composition.</p>"
841+
},
842+
"CompositionRecordingTargetSegmentDurationSeconds":{
843+
"type":"integer",
844+
"box":true,
845+
"max":10,
846+
"min":2
847+
},
828848
"CompositionState":{
829849
"type":"string",
830850
"enum":[
@@ -2384,7 +2404,7 @@
23842404
},
23852405
"recordingS3Prefix":{
23862406
"shape":"ParticipantRecordingS3Prefix",
2387-
"documentation":"<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not enabled. If individual participant recording merge is enabled, and if a stage publisher disconnects from a stage and then reconnects, IVS tries to record to the same S3 prefix as the previous session. See <a href=\"/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html#ind-part-rec-merge-frag\"> Merge Fragmented Individual Participant Recordings</a>.</p>"
2407+
"documentation":"<p>S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or <code>\"\"</code> (empty string), if recording is not enabled.</p>"
23882408
},
23892409
"recordingState":{
23902410
"shape":"ParticipantRecordingState",
@@ -2437,6 +2457,16 @@
24372457
"FAILED"
24382458
]
24392459
},
2460+
"ParticipantRecordingHlsConfiguration":{
2461+
"type":"structure",
2462+
"members":{
2463+
"targetSegmentDurationSeconds":{
2464+
"shape":"ParticipantRecordingTargetSegmentDurationSeconds",
2465+
"documentation":"<p>Defines the target duration for recorded segments generated when recording a stage participant. Segments may have durations longer than the specified value when needed to ensure each segment begins with a keyframe. Default: 6.</p>"
2466+
}
2467+
},
2468+
"documentation":"<p>An object representing a configuration of participant HLS recordings for individual participant recording.</p>"
2469+
},
24402470
"ParticipantRecordingMediaType":{
24412471
"type":"string",
24422472
"enum":[
@@ -2479,6 +2509,12 @@
24792509
"DISABLED"
24802510
]
24812511
},
2512+
"ParticipantRecordingTargetSegmentDurationSeconds":{
2513+
"type":"integer",
2514+
"box":true,
2515+
"max":10,
2516+
"min":2
2517+
},
24822518
"ParticipantState":{
24832519
"type":"string",
24842520
"enum":[
@@ -2846,6 +2882,10 @@
28462882
"RecordingConfiguration":{
28472883
"type":"structure",
28482884
"members":{
2885+
"hlsConfiguration":{
2886+
"shape":"CompositionRecordingHlsConfiguration",
2887+
"documentation":"<p>An HLS configuration object to return information about how the recording will be configured.</p>"
2888+
},
28492889
"format":{
28502890
"shape":"RecordingConfigurationFormat",
28512891
"documentation":"<p>The recording format for storing a recording in Amazon S3.</p>"

sdk/code-analysis/ServiceAnalysis/IVSRealTime/Generated/PropertyValueRules.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,11 @@
475475
<max>128</max>
476476
<pattern>arn:aws:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+</pattern>
477477
</property-value-rule>
478+
<property-value-rule>
479+
<property>Amazon.IVSRealTime.Model.CompositionRecordingHlsConfiguration.TargetSegmentDurationSeconds</property>
480+
<min>2</min>
481+
<max>10</max>
482+
</property-value-rule>
478483
<property-value-rule>
479484
<property>Amazon.IVSRealTime.Model.CompositionSummary.Arn</property>
480485
<min>1</min>
@@ -665,6 +670,11 @@
665670
<min>0</min>
666671
<max>128</max>
667672
</property-value-rule>
673+
<property-value-rule>
674+
<property>Amazon.IVSRealTime.Model.ParticipantRecordingHlsConfiguration.TargetSegmentDurationSeconds</property>
675+
<min>2</min>
676+
<max>10</max>
677+
</property-value-rule>
668678
<property-value-rule>
669679
<property>Amazon.IVSRealTime.Model.ParticipantSummary.ParticipantId</property>
670680
<min>0</min>

sdk/src/Services/IVSRealTime/Generated/Model/AutoParticipantRecordingConfiguration.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,30 @@ namespace Amazon.IVSRealTime.Model
3434
/// </summary>
3535
public partial class AutoParticipantRecordingConfiguration
3636
{
37+
private ParticipantRecordingHlsConfiguration _hlsConfiguration;
3738
private List<string> _mediaTypes = AWSConfigs.InitializeCollections ? new List<string>() : null;
3839
private int? _recordingReconnectWindowSeconds;
3940
private string _storageConfigurationArn;
4041
private ParticipantThumbnailConfiguration _thumbnailConfiguration;
4142

43+
/// <summary>
44+
/// Gets and sets the property HlsConfiguration.
45+
/// <para>
46+
/// HLS configuration object for individual participant recording.
47+
/// </para>
48+
/// </summary>
49+
public ParticipantRecordingHlsConfiguration HlsConfiguration
50+
{
51+
get { return this._hlsConfiguration; }
52+
set { this._hlsConfiguration = value; }
53+
}
54+
55+
// Check to see if HlsConfiguration property is set
56+
internal bool IsSetHlsConfiguration()
57+
{
58+
return this._hlsConfiguration != null;
59+
}
60+
4261
/// <summary>
4362
/// Gets and sets the property MediaTypes.
4463
/// <para>
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
/*
17+
* Do not modify this file. This file is generated from the ivs-realtime-2020-07-14.normal.json service model.
18+
*/
19+
using System;
20+
using System.Collections.Generic;
21+
using System.Xml.Serialization;
22+
using System.Text;
23+
using System.IO;
24+
using System.Net;
25+
26+
using Amazon.Runtime;
27+
using Amazon.Runtime.Internal;
28+
29+
#pragma warning disable CS0612,CS0618,CS1570
30+
namespace Amazon.IVSRealTime.Model
31+
{
32+
/// <summary>
33+
/// An object representing a configuration of HLS recordings for server-side composition.
34+
/// </summary>
35+
public partial class CompositionRecordingHlsConfiguration
36+
{
37+
private int? _targetSegmentDurationSeconds;
38+
39+
/// <summary>
40+
/// Gets and sets the property TargetSegmentDurationSeconds.
41+
/// <para>
42+
/// Defines the target duration for recorded segments generated when using composite recording.
43+
/// Segments may have durations shorter than the specified value when needed to ensure
44+
/// each segment begins with a keyframe. Default: 2.
45+
/// </para>
46+
/// </summary>
47+
[AWSProperty(Min=2, Max=10)]
48+
public int TargetSegmentDurationSeconds
49+
{
50+
get { return this._targetSegmentDurationSeconds.GetValueOrDefault(); }
51+
set { this._targetSegmentDurationSeconds = value; }
52+
}
53+
54+
// Check to see if TargetSegmentDurationSeconds property is set
55+
internal bool IsSetTargetSegmentDurationSeconds()
56+
{
57+
return this._targetSegmentDurationSeconds.HasValue;
58+
}
59+
60+
}
61+
}

sdk/src/Services/IVSRealTime/Generated/Model/Internal/MarshallTransformations/AutoParticipantRecordingConfigurationMarshaller.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@ public void Marshall(AutoParticipantRecordingConfiguration requestObject, JsonMa
4848
{
4949
if(requestObject == null)
5050
return;
51+
if(requestObject.IsSetHlsConfiguration())
52+
{
53+
context.Writer.WritePropertyName("hlsConfiguration");
54+
context.Writer.WriteObjectStart();
55+
56+
var marshaller = ParticipantRecordingHlsConfigurationMarshaller.Instance;
57+
marshaller.Marshall(requestObject.HlsConfiguration, context);
58+
59+
context.Writer.WriteObjectEnd();
60+
}
61+
5162
if(requestObject.IsSetMediaTypes())
5263
{
5364
context.Writer.WritePropertyName("mediaTypes");

sdk/src/Services/IVSRealTime/Generated/Model/Internal/MarshallTransformations/AutoParticipantRecordingConfigurationUnmarshaller.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ public AutoParticipantRecordingConfiguration Unmarshall(JsonUnmarshallerContext
6666
int targetDepth = context.CurrentDepth;
6767
while (context.ReadAtDepth(targetDepth))
6868
{
69+
if (context.TestExpression("hlsConfiguration", targetDepth))
70+
{
71+
var unmarshaller = ParticipantRecordingHlsConfigurationUnmarshaller.Instance;
72+
unmarshalledObject.HlsConfiguration = unmarshaller.Unmarshall(context);
73+
continue;
74+
}
6975
if (context.TestExpression("mediaTypes", targetDepth))
7076
{
7177
var unmarshaller = new ListUnmarshaller<string, StringUnmarshaller>(StringUnmarshaller.Instance);

0 commit comments

Comments
 (0)