Skip to content

Commit 3936b71

Browse files
author
AWS
committed
Amazon Kinesis Video WebRTC Storage Update: Add JoinStorageSessionAsViewer API
1 parent cba4c52 commit 3936b71

File tree

3 files changed

+79
-34
lines changed

3 files changed

+79
-34
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "Amazon Kinesis Video WebRTC Storage",
4+
"contributor": "",
5+
"description": "Add JoinStorageSessionAsViewer API"
6+
}

services/kinesisvideowebrtcstorage/src/main/resources/codegen-resources/endpoint-rule-set.json

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
]
4141
}
4242
],
43-
"type": "tree",
4443
"rules": [
4544
{
4645
"conditions": [
@@ -59,7 +58,6 @@
5958
},
6059
{
6160
"conditions": [],
62-
"type": "tree",
6361
"rules": [
6462
{
6563
"conditions": [
@@ -87,13 +85,14 @@
8785
},
8886
"type": "endpoint"
8987
}
90-
]
88+
],
89+
"type": "tree"
9190
}
92-
]
91+
],
92+
"type": "tree"
9393
},
9494
{
9595
"conditions": [],
96-
"type": "tree",
9796
"rules": [
9897
{
9998
"conditions": [
@@ -106,7 +105,6 @@
106105
]
107106
}
108107
],
109-
"type": "tree",
110108
"rules": [
111109
{
112110
"conditions": [
@@ -120,7 +118,6 @@
120118
"assign": "PartitionResult"
121119
}
122120
],
123-
"type": "tree",
124121
"rules": [
125122
{
126123
"conditions": [
@@ -143,7 +140,6 @@
143140
]
144141
}
145142
],
146-
"type": "tree",
147143
"rules": [
148144
{
149145
"conditions": [
@@ -178,11 +174,9 @@
178174
]
179175
}
180176
],
181-
"type": "tree",
182177
"rules": [
183178
{
184179
"conditions": [],
185-
"type": "tree",
186180
"rules": [
187181
{
188182
"conditions": [],
@@ -193,16 +187,19 @@
193187
},
194188
"type": "endpoint"
195189
}
196-
]
190+
],
191+
"type": "tree"
197192
}
198-
]
193+
],
194+
"type": "tree"
199195
},
200196
{
201197
"conditions": [],
202198
"error": "FIPS and DualStack are enabled, but this partition does not support one or both",
203199
"type": "error"
204200
}
205-
]
201+
],
202+
"type": "tree"
206203
},
207204
{
208205
"conditions": [
@@ -216,14 +213,12 @@
216213
]
217214
}
218215
],
219-
"type": "tree",
220216
"rules": [
221217
{
222218
"conditions": [
223219
{
224220
"fn": "booleanEquals",
225221
"argv": [
226-
true,
227222
{
228223
"fn": "getAttr",
229224
"argv": [
@@ -232,15 +227,14 @@
232227
},
233228
"supportsFIPS"
234229
]
235-
}
230+
},
231+
true
236232
]
237233
}
238234
],
239-
"type": "tree",
240235
"rules": [
241236
{
242237
"conditions": [],
243-
"type": "tree",
244238
"rules": [
245239
{
246240
"conditions": [],
@@ -251,16 +245,19 @@
251245
},
252246
"type": "endpoint"
253247
}
254-
]
248+
],
249+
"type": "tree"
255250
}
256-
]
251+
],
252+
"type": "tree"
257253
},
258254
{
259255
"conditions": [],
260256
"error": "FIPS is enabled but this partition does not support FIPS",
261257
"type": "error"
262258
}
263-
]
259+
],
260+
"type": "tree"
264261
},
265262
{
266263
"conditions": [
@@ -274,7 +271,6 @@
274271
]
275272
}
276273
],
277-
"type": "tree",
278274
"rules": [
279275
{
280276
"conditions": [
@@ -294,11 +290,9 @@
294290
]
295291
}
296292
],
297-
"type": "tree",
298293
"rules": [
299294
{
300295
"conditions": [],
301-
"type": "tree",
302296
"rules": [
303297
{
304298
"conditions": [],
@@ -309,20 +303,22 @@
309303
},
310304
"type": "endpoint"
311305
}
312-
]
306+
],
307+
"type": "tree"
313308
}
314-
]
309+
],
310+
"type": "tree"
315311
},
316312
{
317313
"conditions": [],
318314
"error": "DualStack is enabled but this partition does not support DualStack",
319315
"type": "error"
320316
}
321-
]
317+
],
318+
"type": "tree"
322319
},
323320
{
324321
"conditions": [],
325-
"type": "tree",
326322
"rules": [
327323
{
328324
"conditions": [],
@@ -333,18 +329,22 @@
333329
},
334330
"type": "endpoint"
335331
}
336-
]
332+
],
333+
"type": "tree"
337334
}
338-
]
335+
],
336+
"type": "tree"
339337
}
340-
]
338+
],
339+
"type": "tree"
341340
},
342341
{
343342
"conditions": [],
344343
"error": "Invalid Configuration: Missing Region",
345344
"type": "error"
346345
}
347-
]
346+
],
347+
"type": "tree"
348348
}
349349
]
350350
}

services/kinesisvideowebrtcstorage/src/main/resources/codegen-resources/service-2.json

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,23 @@
2626
{"shape":"AccessDeniedException"},
2727
{"shape":"ResourceNotFoundException"}
2828
],
29-
"documentation":"<p> Join the ongoing one way-video and/or multi-way audio WebRTC session as a video producing device for an input channel. If there’s no existing session for the channel, a new streaming session needs to be created, and the Amazon Resource Name (ARN) of the signaling channel must be provided. </p> <p>Currently for the <code>SINGLE_MASTER</code> type, a video producing device is able to ingest both audio and video media into a stream, while viewers can only ingest audio. Both a video producing device and viewers can join the session first, and wait for other participants.</p> <p>While participants are having peer to peer conversations through webRTC, the ingested media session will be stored into the Kinesis Video Stream. Multiple viewers are able to playback real-time media.</p> <p>Customers can also use existing Kinesis Video Streams features like <code>HLS</code> or <code>DASH</code> playback, Image generation, and more with ingested WebRTC media.</p> <note> <p>Assume that only one video producing device client can be associated with a session for the channel. If more than one client joins the session of a specific channel as a video producing device, the most recent client request takes precedence. </p> </note>"
29+
"documentation":"<note> <p>Before using this API, you must call the <code>GetSignalingChannelEndpoint</code> API to request the WEBRTC endpoint. You then specify the endpoint and region in your <code>JoinStorageSession</code> API request.</p> </note> <p>Join the ongoing one way-video and/or multi-way audio WebRTC session as a video producing device for an input channel. If there’s no existing session for the channel, a new streaming session needs to be created, and the Amazon Resource Name (ARN) of the signaling channel must be provided. </p> <p>Currently for the <code>SINGLE_MASTER</code> type, a video producing device is able to ingest both audio and video media into a stream. Only video producing devices can join the session and record media.</p> <important> <p>Both audio and video tracks are currently required for WebRTC ingestion.</p> <p>Current requirements:</p> <ul> <li> <p>Video track: H.264</p> </li> <li> <p>Audio track: Opus</p> </li> </ul> </important> <p>The resulting ingested video in the Kinesis video stream will have the following parameters: H.264 video and AAC audio.</p> <p>Once a master participant has negotiated a connection through WebRTC, the ingested media session will be stored in the Kinesis video stream. Multiple viewers are then able to play back real-time media through our Playback APIs.</p> <p>You can also use existing Kinesis Video Streams features like <code>HLS</code> or <code>DASH</code> playback, image generation via <a href=\"https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-getImages.html\">GetImages</a>, and more with ingested WebRTC media.</p> <note> <p>S3 image delivery and notifications are not currently supported.</p> </note> <note> <p>Assume that only one video producing device client can be associated with a session for the channel. If more than one client joins the session of a specific channel as a video producing device, the most recent client request takes precedence. </p> </note> <p> <b>Additional information</b> </p> <ul> <li> <p> <b>Idempotent</b> - This API is not idempotent.</p> </li> <li> <p> <b>Retry behavior</b> - This is counted as a new API call.</p> </li> <li> <p> <b>Concurrent calls</b> - Concurrent calls are allowed. An offer is sent once per each call.</p> </li> </ul>"
30+
},
31+
"JoinStorageSessionAsViewer":{
32+
"name":"JoinStorageSessionAsViewer",
33+
"http":{
34+
"method":"POST",
35+
"requestUri":"/joinStorageSessionAsViewer",
36+
"responseCode":200
37+
},
38+
"input":{"shape":"JoinStorageSessionAsViewerInput"},
39+
"errors":[
40+
{"shape":"ClientLimitExceededException"},
41+
{"shape":"InvalidArgumentException"},
42+
{"shape":"AccessDeniedException"},
43+
{"shape":"ResourceNotFoundException"}
44+
],
45+
"documentation":"<p> Join the ongoing one way-video and/or multi-way audio WebRTC session as a viewer for an input channel. If there’s no existing session for the channel, create a new streaming session and provide the Amazon Resource Name (ARN) of the signaling channel (<code>channelArn</code>) and client id (<code>clientId</code>). </p> <p>Currently for <code>SINGLE_MASTER</code> type, a video producing device is able to ingest both audio and video media into a stream, while viewers can only ingest audio. Both a video producing device and viewers can join a session first and wait for other participants. While participants are having peer to peer conversations through WebRTC, the ingested media session will be stored into the Kinesis Video Stream. Multiple viewers are able to playback real-time media. </p> <p>Customers can also use existing Kinesis Video Streams features like <code>HLS</code> or <code>DASH</code> playback, Image generation, and more with ingested WebRTC media. If there’s an existing session with the same <code>clientId</code> that's found in the join session request, the new request takes precedence.</p>"
3046
}
3147
},
3248
"shapes":{
@@ -46,6 +62,12 @@
4662
"type":"string",
4763
"pattern":"^arn:(aws[a-zA-Z-]*):kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+$"
4864
},
65+
"ClientId":{
66+
"type":"string",
67+
"max":256,
68+
"min":1,
69+
"pattern":"^[a-zA-Z0-9_.-]+$"
70+
},
4971
"ClientLimitExceededException":{
5072
"type":"structure",
5173
"members":{
@@ -70,6 +92,23 @@
7092
},
7193
"exception":true
7294
},
95+
"JoinStorageSessionAsViewerInput":{
96+
"type":"structure",
97+
"required":[
98+
"channelArn",
99+
"clientId"
100+
],
101+
"members":{
102+
"channelArn":{
103+
"shape":"ChannelArn",
104+
"documentation":"<p> The Amazon Resource Name (ARN) of the signaling channel. </p>"
105+
},
106+
"clientId":{
107+
"shape":"ClientId",
108+
"documentation":"<p> The unique identifier for the sender client. </p>"
109+
}
110+
}
111+
},
73112
"JoinStorageSessionInput":{
74113
"type":"structure",
75114
"required":["channelArn"],
@@ -94,5 +133,5 @@
94133
},
95134
"String":{"type":"string"}
96135
},
97-
"documentation":"<p> </p>"
136+
"documentation":"<p><fullname>webrtc</fullname> <p> </p></p>"
98137
}

0 commit comments

Comments
 (0)