aws-sdk-kinesisvideoarchivedmedia 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9265abd211e9d699e897a757676fb061db3f0662
4
- data.tar.gz: ceb3b79ac1d7414310f03e990060ebdf22887d36
3
+ metadata.gz: 94844d8f11bcddb68a3dfa0b9284275ee0793cc7
4
+ data.tar.gz: 53f46ecb5f44556da15c49a17a2a14011dfcbff0
5
5
  SHA512:
6
- metadata.gz: c4fe3937f182d949a6a7fc3cef1c10d4b4544eb18070c29d0a057c3bca194b9e4eb9effb98dac8915d4538d9397097bc0e621123d257650362e00f4145b5c947
7
- data.tar.gz: 57cd750819ec9ac4c0e2b98da1164a4333cfaab730071d4c4d46a1fcd4eaf7364e6546b5bbe8d8da8ffcbd15cb6fbe9e0f04ab21cfbf8ff50d3fa7b1e2ed9cb2
6
+ metadata.gz: eb78af1d98d4018ab6bcd53a298467323763d444f30c6ee1e30ecc34ead1b72a9cdf15dc73bdddd21e983267fc4f029111cea6a0274c7e07b35c385790f21a9d
7
+ data.tar.gz: c31a95a2fdc968864f687c4b28343f210506770f50d62bbcc7a330725e53f1be2b9d443f53f03544daa1aea4417fefa6a1f93da5157b7bb9ef4a5e236e6d8394
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-kinesisvideoarchivedmedia/customizations'
42
42
  # @service
43
43
  module Aws::KinesisVideoArchivedMedia
44
44
 
45
- GEM_VERSION = '1.1.0'
45
+ GEM_VERSION = '1.2.0'
46
46
 
47
47
  end
@@ -156,14 +156,308 @@ module Aws::KinesisVideoArchivedMedia
156
156
 
157
157
  # @!group API Operations
158
158
 
159
- # Gets media for a list of fragments (specified by fragment number) from
160
- # the archived data in a Kinesis video stream.
161
- #
162
- # <note markdown="1"> This operation is only available for the AWS SDK for Java. It is not
163
- # supported in AWS SDKs for other languages.
159
+ # Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can
160
+ # then open the URL in a browser or media player to view the stream
161
+ # contents.
162
+ #
163
+ # You must specify either the `StreamName` or the `StreamARN`.
164
+ #
165
+ # An Amazon Kinesis video stream has the following requirements for
166
+ # providing data through HLS:
167
+ #
168
+ # * The media type must be `video/h264`.
169
+ #
170
+ # * Data retention must be greater than 0.
171
+ #
172
+ # * The fragments must contain codec private data in the AVC (Advanced
173
+ # Video Coding) for H.264 format ([MPEG-4 specification ISO/IEC
174
+ # 14496-15][1]). For information about adapting stream data to a given
175
+ # format, see [NAL Adaptation Flags][2].
176
+ #
177
+ # Kinesis Video Streams HLS sessions contain fragments in the fragmented
178
+ # MPEG-4 form (also called fMP4 or CMAF), rather than the MPEG-2 form
179
+ # (also called TS chunks, which the HLS specification also supports).
180
+ # For more information about HLS fragment types, see the [HLS
181
+ # specification][3].
182
+ #
183
+ # The following procedure shows how to use HLS with Kinesis Video
184
+ # Streams:
185
+ #
186
+ # 1. Get an endpoint using [GetDataEndpoint][4], specifying
187
+ # `GET_HLS_STREAMING_SESSION_URL` for the `APIName` parameter.
188
+ #
189
+ # 2. Retrieve the HLS URL using `GetHLSStreamingSessionURL`. Kinesis
190
+ # Video Streams creates an HLS streaming session to be used for
191
+ # accessing content in a stream using the HLS protocol.
192
+ # `GetHLSStreamingSessionURL` returns an authenticated URL (that
193
+ # includes an encrypted session token) for the session's HLS
194
+ # *master playlist* (the root resource needed for streaming with
195
+ # HLS).
196
+ #
197
+ # <note markdown="1"> Don't share or store this token where an unauthorized entity
198
+ # could access it. The token provides access to the content of the
199
+ # stream. Safeguard the token with the same measures that you would
200
+ # use with your AWS credentials.
201
+ #
202
+ # </note>
203
+ #
204
+ # The media that is made available through the playlist consists
205
+ # only of the requested stream, time range, and format. No other
206
+ # media data (such as frames outside the requested window or
207
+ # alternate bit rates) is made available.
208
+ #
209
+ # 3. Provide the URL (containing the encrypted session token) for the
210
+ # HLS master playlist to a media player that supports the HLS
211
+ # protocol. Kinesis Video Streams makes the HLS media playlist,
212
+ # initialization fragment, and media fragments available through the
213
+ # master playlist URL. The initialization fragment contains the
214
+ # codec private data for the stream, and other data needed to set up
215
+ # the video decoder and renderer. The media fragments contain
216
+ # H.264-encoded video frames and time stamps.
217
+ #
218
+ # 4. The media player receives the authenticated URL and requests
219
+ # stream metadata and media data normally. When the media player
220
+ # requests data, it calls the following actions:
221
+ #
222
+ # * **GetHLSMasterPlaylist:** Retrieves an HLS master playlist,
223
+ # which contains a URL for the `GetHLSMediaPlaylist` action, and
224
+ # additional metadata for the media player, including estimated
225
+ # bit rate and resolution.
226
+ #
227
+ # * **GetHLSMediaPlaylist:** Retrieves an HLS media playlist, which
228
+ # contains a URL to access the MP4 initialization fragment with
229
+ # the `GetMP4InitFragment` action, and URLs to access the MP4
230
+ # media fragments with the `GetMP4MediaFragment` actions. The HLS
231
+ # media playlist also contains metadata about the stream that the
232
+ # player needs to play it, such as whether the `PlaybackMode` is
233
+ # `LIVE` or `ON_DEMAND`. The HLS media playlist is typically
234
+ # static for sessions with a `PlaybackType` of `ON_DEMAND`. The
235
+ # HLS media playlist is continually updated with new fragments for
236
+ # sessions with a `PlaybackType` of `LIVE`.
237
+ #
238
+ # * **GetMP4InitFragment:** Retrieves the MP4 initialization
239
+ # fragment. The media player typically loads the initialization
240
+ # fragment before loading any media fragments. This fragment
241
+ # contains the "`fytp`" and "`moov`" MP4 atoms, and the child
242
+ # atoms that are needed to initialize the media player decoder.
243
+ #
244
+ # The initialization fragment does not correspond to a fragment in
245
+ # a Kinesis video stream. It contains only the codec private data
246
+ # for the stream, which the media player needs to decode video
247
+ # frames.
248
+ #
249
+ # * **GetMP4MediaFragment:** Retrieves MP4 media fragments. These
250
+ # fragments contain the "`moof`" and "`mdat`" MP4 atoms and
251
+ # their child atoms, containing the encoded fragment's video
252
+ # frames and their time stamps.
253
+ #
254
+ # <note markdown="1"> After the first media fragment is made available in a streaming
255
+ # session, any fragments that don't contain the same codec
256
+ # private data are excluded in the HLS media playlist. Therefore,
257
+ # the codec private data does not change between fragments in a
258
+ # session.
259
+ #
260
+ # </note>
261
+ #
262
+ # Data retrieved with this action is billable. See
263
+ # [Pricing](aws.amazon.comkinesis/video-streams/pricing/) for
264
+ # details.
265
+ #
266
+ # <note markdown="1"> The following restrictions apply to HLS sessions:
267
+ #
268
+ # * A streaming session URL should not be shared between players. The
269
+ # service might throttle a session if multiple media players are
270
+ # sharing it. For connection limits, see [Kinesis Video Streams
271
+ # Limits][5].
272
+ #
273
+ # * A Kinesis video stream can have a maximum of five active HLS
274
+ # streaming sessions. If a new session is created when the maximum
275
+ # number of sessions is already active, the oldest (earliest created)
276
+ # session is closed. The number of active `GetMedia` connections on a
277
+ # Kinesis video stream does not count against this limit, and the
278
+ # number of active HLS sessions does not count against the active
279
+ # `GetMedia` connection limit.
164
280
  #
165
281
  # </note>
166
282
  #
283
+ # You can monitor the amount of data that the media player consumes by
284
+ # monitoring the `GetMP4MediaFragment.OutgoingBytes` Amazon CloudWatch
285
+ # metric. For information about using CloudWatch to monitor Kinesis
286
+ # Video Streams, see [Monitoring Kinesis Video Streams][6]. For pricing
287
+ # information, see [Amazon Kinesis Video Streams Pricing][7] and [AWS
288
+ # Pricing][8]. Charges for both HLS sessions and outgoing AWS data
289
+ # apply.
290
+ #
291
+ # For more information about HLS, see [HTTP Live Streaming][9] on the
292
+ # [Apple Developer site][10].
293
+ #
294
+ #
295
+ #
296
+ # [1]: https://www.iso.org/standard/55980.html
297
+ # [2]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/latest/dg/producer-reference-nal.html
298
+ # [3]: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23
299
+ # [4]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html
300
+ # [5]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html
301
+ # [6]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html
302
+ # [7]: https://aws.amazon.com/kinesis/video-streams/pricing/
303
+ # [8]: https://aws.amazon.com/pricing/
304
+ # [9]: https://developer.apple.com/streaming/
305
+ # [10]: https://developer.apple.com
306
+ #
307
+ # @option params [String] :stream_name
308
+ # The name of the stream for which to retrieve the HLS master playlist
309
+ # URL.
310
+ #
311
+ # You must specify either the `StreamName` or the `StreamARN`.
312
+ #
313
+ # @option params [String] :stream_arn
314
+ # The Amazon Resource Name (ARN) of the stream for which to retrieve the
315
+ # HLS master playlist URL.
316
+ #
317
+ # You must specify either the `StreamName` or the `StreamARN`.
318
+ #
319
+ # @option params [String] :playback_mode
320
+ # Whether to retrieve live or archived, on-demand data.
321
+ #
322
+ # Features of the two types of session include the following:
323
+ #
324
+ # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
325
+ # media playlist is continually updated with the latest fragments as
326
+ # they become available. We recommend that the media player retrieve a
327
+ # new playlist on a one-second interval. When this type of session is
328
+ # played in a media player, the user interface typically displays a
329
+ # "live" notification, with no scrubber control for choosing the
330
+ # position in the playback window to display.
331
+ #
332
+ # <note markdown="1"> In `LIVE` mode, the newest available fragments are included in an
333
+ # HLS media playlist, even if there is a gap between fragments (that
334
+ # is, if a fragment is missing). A gap like this might cause a media
335
+ # player to halt or cause a jump in playback. In this mode, fragments
336
+ # are not added to the HLS media playlist if they are older than the
337
+ # newest fragment in the playlist. If the missing fragment becomes
338
+ # available after a subsequent fragment is added to the playlist, the
339
+ # older fragment is not added, and the gap is not filled.
340
+ #
341
+ # </note>
342
+ #
343
+ # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the HLS
344
+ # media playlist contains all the fragments for the session, up to the
345
+ # number that is specified in `MaxMediaPlaylistFragmentResults`. The
346
+ # playlist must be retrieved only once for each session. When this
347
+ # type of session is played in a media player, the user interface
348
+ # typically displays a scrubber control for choosing the position in
349
+ # the playback window to display.
350
+ #
351
+ # In both playback modes, if `FragmentSelectorType` is
352
+ # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
353
+ # same start time stamp, the fragment that has the larger fragment
354
+ # number (that is, the newer fragment) is included in the HLS media
355
+ # playlist. The other fragments are not included. Fragments that have
356
+ # different time stamps but have overlapping durations are still
357
+ # included in the HLS media playlist. This can lead to unexpected
358
+ # behavior in the media player.
359
+ #
360
+ # The default is `LIVE`.
361
+ #
362
+ # @option params [Types::HLSFragmentSelector] :hls_fragment_selector
363
+ # The time range of the requested fragment, and the source of the time
364
+ # stamps.
365
+ #
366
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
367
+ # parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
368
+ # is `LIVE`, the `FragmentSelectorType` can be set, but the
369
+ # `TimestampRange` should not be set. If `PlaybackMode` is `ON_DEMAND`,
370
+ # both `FragmentSelectorType` and `TimestampRange` must be set.
371
+ #
372
+ # @option params [String] :discontinuity_mode
373
+ # Specifies when flags marking discontinuities between fragments will be
374
+ # added to the media playlists. The default is `ALWAYS` when
375
+ # HLSFragmentSelector is `SERVER_TIMESTAMP`, and `NEVER` when it is
376
+ # `PRODUCER_TIMESTAMP`.
377
+ #
378
+ # Media players typically build a timeline of media content to play,
379
+ # based on the time stamps of each fragment. This means that if there is
380
+ # any overlap between fragments (as is typical if HLSFragmentSelector is
381
+ # `SERVER_TIMESTAMP`), the media player timeline has small gaps between
382
+ # fragments in some places, and overwrites frames in other places. When
383
+ # there are discontinuity flags between fragments, the media player is
384
+ # expected to reset the timeline, resulting in the fragment being played
385
+ # immediately after the previous fragment. We recommend that you always
386
+ # have discontinuity flags between fragments if the fragment time stamps
387
+ # are not accurate or if fragments might be missing. You should not
388
+ # place discontinuity flags between fragments for the player timeline to
389
+ # accurately map to the producer time stamps.
390
+ #
391
+ # @option params [Integer] :expires
392
+ # The time in seconds until the requested session expires. This value
393
+ # can be between 300 (5 minutes) and 43200 (12 hours).
394
+ #
395
+ # When a session expires, no new calls to `GetHLSMasterPlaylist`,
396
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or `GetMP4MediaFragment`
397
+ # can be made for that session.
398
+ #
399
+ # The default is 300 (5 minutes).
400
+ #
401
+ # @option params [Integer] :max_media_playlist_fragment_results
402
+ # The maximum number of fragments that are returned in the HLS media
403
+ # playlists.
404
+ #
405
+ # When the `PlaybackMode` is `LIVE`, the most recent fragments are
406
+ # returned up to this value. When the `PlaybackMode` is `ON_DEMAND`, the
407
+ # oldest fragments are returned, up to this maximum number.
408
+ #
409
+ # When there are a higher number of fragments available in a live HLS
410
+ # media playlist, video players often buffer content before starting
411
+ # playback. Increasing the buffer size increases the playback latency,
412
+ # but it decreases the likelihood that rebuffering will occur during
413
+ # playback. We recommend that a live HLS media playlist have a minimum
414
+ # of 3 fragments and a maximum of 10 fragments.
415
+ #
416
+ # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
417
+ # `PlaybackMode` is `ON_DEMAND`.
418
+ #
419
+ # The maximum value of 1,000 fragments corresponds to more than 16
420
+ # minutes of video on streams with 1-second fragments, and more than 2
421
+ # 1/2 hours of video on streams with 10-second fragments.
422
+ #
423
+ # @return [Types::GetHLSStreamingSessionURLOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
424
+ #
425
+ # * {Types::GetHLSStreamingSessionURLOutput#hls_streaming_session_url #hls_streaming_session_url} => String
426
+ #
427
+ # @example Request syntax with placeholder values
428
+ #
429
+ # resp = client.get_hls_streaming_session_url({
430
+ # stream_name: "StreamName",
431
+ # stream_arn: "ResourceARN",
432
+ # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
433
+ # hls_fragment_selector: {
434
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
435
+ # timestamp_range: {
436
+ # start_timestamp: Time.now,
437
+ # end_timestamp: Time.now,
438
+ # },
439
+ # },
440
+ # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER
441
+ # expires: 1,
442
+ # max_media_playlist_fragment_results: 1,
443
+ # })
444
+ #
445
+ # @example Response structure
446
+ #
447
+ # resp.hls_streaming_session_url #=> String
448
+ #
449
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL AWS API Documentation
450
+ #
451
+ # @overload get_hls_streaming_session_url(params = {})
452
+ # @param [Hash] params ({})
453
+ def get_hls_streaming_session_url(params = {}, options = {})
454
+ req = build_request(:get_hls_streaming_session_url, params)
455
+ req.send_request(options)
456
+ end
457
+
458
+ # Gets media for a list of fragments (specified by fragment number) from
459
+ # the archived data in an Amazon Kinesis video stream.
460
+ #
167
461
  # The following limits apply when using the `GetMediaForFragmentList`
168
462
  # API:
169
463
  #
@@ -279,7 +573,7 @@ module Aws::KinesisVideoArchivedMedia
279
573
  params: params,
280
574
  config: config)
281
575
  context[:gem_name] = 'aws-sdk-kinesisvideoarchivedmedia'
282
- context[:gem_version] = '1.1.0'
576
+ context[:gem_version] = '1.2.0'
283
577
  Seahorse::Client::Request.new(handlers, context)
284
578
  end
285
579
 
@@ -13,27 +13,41 @@ module Aws::KinesisVideoArchivedMedia
13
13
 
14
14
  ClientLimitExceededException = Shapes::StructureShape.new(name: 'ClientLimitExceededException')
15
15
  ContentType = Shapes::StringShape.new(name: 'ContentType')
16
+ DiscontinuityMode = Shapes::StringShape.new(name: 'DiscontinuityMode')
16
17
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
18
+ Expires = Shapes::IntegerShape.new(name: 'Expires')
17
19
  Fragment = Shapes::StructureShape.new(name: 'Fragment')
18
20
  FragmentList = Shapes::ListShape.new(name: 'FragmentList')
19
21
  FragmentNumberList = Shapes::ListShape.new(name: 'FragmentNumberList')
20
22
  FragmentNumberString = Shapes::StringShape.new(name: 'FragmentNumberString')
21
23
  FragmentSelector = Shapes::StructureShape.new(name: 'FragmentSelector')
22
24
  FragmentSelectorType = Shapes::StringShape.new(name: 'FragmentSelectorType')
25
+ GetHLSStreamingSessionURLInput = Shapes::StructureShape.new(name: 'GetHLSStreamingSessionURLInput')
26
+ GetHLSStreamingSessionURLOutput = Shapes::StructureShape.new(name: 'GetHLSStreamingSessionURLOutput')
23
27
  GetMediaForFragmentListInput = Shapes::StructureShape.new(name: 'GetMediaForFragmentListInput')
24
28
  GetMediaForFragmentListOutput = Shapes::StructureShape.new(name: 'GetMediaForFragmentListOutput')
29
+ HLSFragmentSelector = Shapes::StructureShape.new(name: 'HLSFragmentSelector')
30
+ HLSFragmentSelectorType = Shapes::StringShape.new(name: 'HLSFragmentSelectorType')
31
+ HLSStreamingSessionURL = Shapes::StringShape.new(name: 'HLSStreamingSessionURL')
32
+ HLSTimestampRange = Shapes::StructureShape.new(name: 'HLSTimestampRange')
25
33
  InvalidArgumentException = Shapes::StructureShape.new(name: 'InvalidArgumentException')
34
+ InvalidCodecPrivateDataException = Shapes::StructureShape.new(name: 'InvalidCodecPrivateDataException')
26
35
  ListFragmentsInput = Shapes::StructureShape.new(name: 'ListFragmentsInput')
27
36
  ListFragmentsOutput = Shapes::StructureShape.new(name: 'ListFragmentsOutput')
28
37
  Long = Shapes::IntegerShape.new(name: 'Long')
38
+ MissingCodecPrivateDataException = Shapes::StructureShape.new(name: 'MissingCodecPrivateDataException')
39
+ NoDataRetentionException = Shapes::StructureShape.new(name: 'NoDataRetentionException')
29
40
  NotAuthorizedException = Shapes::StructureShape.new(name: 'NotAuthorizedException')
30
41
  PageLimit = Shapes::IntegerShape.new(name: 'PageLimit')
31
42
  Payload = Shapes::BlobShape.new(name: 'Payload')
43
+ PlaybackMode = Shapes::StringShape.new(name: 'PlaybackMode')
44
+ ResourceARN = Shapes::StringShape.new(name: 'ResourceARN')
32
45
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
33
46
  StreamName = Shapes::StringShape.new(name: 'StreamName')
34
47
  String = Shapes::StringShape.new(name: 'String')
35
48
  Timestamp = Shapes::TimestampShape.new(name: 'Timestamp')
36
49
  TimestampRange = Shapes::StructureShape.new(name: 'TimestampRange')
50
+ UnsupportedStreamMediaTypeException = Shapes::StructureShape.new(name: 'UnsupportedStreamMediaTypeException')
37
51
 
38
52
  Fragment.add_member(:fragment_number, Shapes::ShapeRef.new(shape: String, location_name: "FragmentNumber"))
39
53
  Fragment.add_member(:fragment_size_in_bytes, Shapes::ShapeRef.new(shape: Long, location_name: "FragmentSizeInBytes"))
@@ -50,6 +64,18 @@ module Aws::KinesisVideoArchivedMedia
50
64
  FragmentSelector.add_member(:timestamp_range, Shapes::ShapeRef.new(shape: TimestampRange, required: true, location_name: "TimestampRange"))
51
65
  FragmentSelector.struct_class = Types::FragmentSelector
52
66
 
67
+ GetHLSStreamingSessionURLInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
68
+ GetHLSStreamingSessionURLInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
69
+ GetHLSStreamingSessionURLInput.add_member(:playback_mode, Shapes::ShapeRef.new(shape: PlaybackMode, location_name: "PlaybackMode"))
70
+ GetHLSStreamingSessionURLInput.add_member(:hls_fragment_selector, Shapes::ShapeRef.new(shape: HLSFragmentSelector, location_name: "HLSFragmentSelector"))
71
+ GetHLSStreamingSessionURLInput.add_member(:discontinuity_mode, Shapes::ShapeRef.new(shape: DiscontinuityMode, location_name: "DiscontinuityMode"))
72
+ GetHLSStreamingSessionURLInput.add_member(:expires, Shapes::ShapeRef.new(shape: Expires, location_name: "Expires"))
73
+ GetHLSStreamingSessionURLInput.add_member(:max_media_playlist_fragment_results, Shapes::ShapeRef.new(shape: PageLimit, location_name: "MaxMediaPlaylistFragmentResults"))
74
+ GetHLSStreamingSessionURLInput.struct_class = Types::GetHLSStreamingSessionURLInput
75
+
76
+ GetHLSStreamingSessionURLOutput.add_member(:hls_streaming_session_url, Shapes::ShapeRef.new(shape: HLSStreamingSessionURL, location_name: "HLSStreamingSessionURL"))
77
+ GetHLSStreamingSessionURLOutput.struct_class = Types::GetHLSStreamingSessionURLOutput
78
+
53
79
  GetMediaForFragmentListInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, required: true, location_name: "StreamName"))
54
80
  GetMediaForFragmentListInput.add_member(:fragments, Shapes::ShapeRef.new(shape: FragmentNumberList, required: true, location_name: "Fragments"))
55
81
  GetMediaForFragmentListInput.struct_class = Types::GetMediaForFragmentListInput
@@ -60,6 +86,14 @@ module Aws::KinesisVideoArchivedMedia
60
86
  GetMediaForFragmentListOutput[:payload] = :payload
61
87
  GetMediaForFragmentListOutput[:payload_member] = GetMediaForFragmentListOutput.member(:payload)
62
88
 
89
+ HLSFragmentSelector.add_member(:fragment_selector_type, Shapes::ShapeRef.new(shape: HLSFragmentSelectorType, location_name: "FragmentSelectorType"))
90
+ HLSFragmentSelector.add_member(:timestamp_range, Shapes::ShapeRef.new(shape: HLSTimestampRange, location_name: "TimestampRange"))
91
+ HLSFragmentSelector.struct_class = Types::HLSFragmentSelector
92
+
93
+ HLSTimestampRange.add_member(:start_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "StartTimestamp"))
94
+ HLSTimestampRange.add_member(:end_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "EndTimestamp"))
95
+ HLSTimestampRange.struct_class = Types::HLSTimestampRange
96
+
63
97
  ListFragmentsInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, required: true, location_name: "StreamName"))
64
98
  ListFragmentsInput.add_member(:max_results, Shapes::ShapeRef.new(shape: PageLimit, location_name: "MaxResults"))
65
99
  ListFragmentsInput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "NextToken"))
@@ -87,6 +121,22 @@ module Aws::KinesisVideoArchivedMedia
87
121
  "signatureVersion" => "v4",
88
122
  }
89
123
 
124
+ api.add_operation(:get_hls_streaming_session_url, Seahorse::Model::Operation.new.tap do |o|
125
+ o.name = "GetHLSStreamingSessionURL"
126
+ o.http_method = "POST"
127
+ o.http_request_uri = "/getHLSStreamingSessionURL"
128
+ o.input = Shapes::ShapeRef.new(shape: GetHLSStreamingSessionURLInput)
129
+ o.output = Shapes::ShapeRef.new(shape: GetHLSStreamingSessionURLOutput)
130
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
131
+ o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
132
+ o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
133
+ o.errors << Shapes::ShapeRef.new(shape: NotAuthorizedException)
134
+ o.errors << Shapes::ShapeRef.new(shape: UnsupportedStreamMediaTypeException)
135
+ o.errors << Shapes::ShapeRef.new(shape: NoDataRetentionException)
136
+ o.errors << Shapes::ShapeRef.new(shape: MissingCodecPrivateDataException)
137
+ o.errors << Shapes::ShapeRef.new(shape: InvalidCodecPrivateDataException)
138
+ end)
139
+
90
140
  api.add_operation(:get_media_for_fragment_list, Seahorse::Model::Operation.new.tap do |o|
91
141
  o.name = "GetMediaForFragmentList"
92
142
  o.http_method = "POST"
@@ -73,6 +73,177 @@ module Aws::KinesisVideoArchivedMedia
73
73
  include Aws::Structure
74
74
  end
75
75
 
76
+ # @note When making an API call, you may pass GetHLSStreamingSessionURLInput
77
+ # data as a hash:
78
+ #
79
+ # {
80
+ # stream_name: "StreamName",
81
+ # stream_arn: "ResourceARN",
82
+ # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
83
+ # hls_fragment_selector: {
84
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
85
+ # timestamp_range: {
86
+ # start_timestamp: Time.now,
87
+ # end_timestamp: Time.now,
88
+ # },
89
+ # },
90
+ # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER
91
+ # expires: 1,
92
+ # max_media_playlist_fragment_results: 1,
93
+ # }
94
+ #
95
+ # @!attribute [rw] stream_name
96
+ # The name of the stream for which to retrieve the HLS master playlist
97
+ # URL.
98
+ #
99
+ # You must specify either the `StreamName` or the `StreamARN`.
100
+ # @return [String]
101
+ #
102
+ # @!attribute [rw] stream_arn
103
+ # The Amazon Resource Name (ARN) of the stream for which to retrieve
104
+ # the HLS master playlist URL.
105
+ #
106
+ # You must specify either the `StreamName` or the `StreamARN`.
107
+ # @return [String]
108
+ #
109
+ # @!attribute [rw] playback_mode
110
+ # Whether to retrieve live or archived, on-demand data.
111
+ #
112
+ # Features of the two types of session include the following:
113
+ #
114
+ # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
115
+ # media playlist is continually updated with the latest fragments as
116
+ # they become available. We recommend that the media player retrieve
117
+ # a new playlist on a one-second interval. When this type of session
118
+ # is played in a media player, the user interface typically displays
119
+ # a "live" notification, with no scrubber control for choosing the
120
+ # position in the playback window to display.
121
+ #
122
+ # <note markdown="1"> In `LIVE` mode, the newest available fragments are included in an
123
+ # HLS media playlist, even if there is a gap between fragments (that
124
+ # is, if a fragment is missing). A gap like this might cause a media
125
+ # player to halt or cause a jump in playback. In this mode,
126
+ # fragments are not added to the HLS media playlist if they are
127
+ # older than the newest fragment in the playlist. If the missing
128
+ # fragment becomes available after a subsequent fragment is added to
129
+ # the playlist, the older fragment is not added, and the gap is not
130
+ # filled.
131
+ #
132
+ # </note>
133
+ #
134
+ # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the
135
+ # HLS media playlist contains all the fragments for the session, up
136
+ # to the number that is specified in
137
+ # `MaxMediaPlaylistFragmentResults`. The playlist must be retrieved
138
+ # only once for each session. When this type of session is played in
139
+ # a media player, the user interface typically displays a scrubber
140
+ # control for choosing the position in the playback window to
141
+ # display.
142
+ #
143
+ # In both playback modes, if `FragmentSelectorType` is
144
+ # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
145
+ # same start time stamp, the fragment that has the larger fragment
146
+ # number (that is, the newer fragment) is included in the HLS media
147
+ # playlist. The other fragments are not included. Fragments that have
148
+ # different time stamps but have overlapping durations are still
149
+ # included in the HLS media playlist. This can lead to unexpected
150
+ # behavior in the media player.
151
+ #
152
+ # The default is `LIVE`.
153
+ # @return [String]
154
+ #
155
+ # @!attribute [rw] hls_fragment_selector
156
+ # The time range of the requested fragment, and the source of the time
157
+ # stamps.
158
+ #
159
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
160
+ # parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
161
+ # is `LIVE`, the `FragmentSelectorType` can be set, but the
162
+ # `TimestampRange` should not be set. If `PlaybackMode` is
163
+ # `ON_DEMAND`, both `FragmentSelectorType` and `TimestampRange` must
164
+ # be set.
165
+ # @return [Types::HLSFragmentSelector]
166
+ #
167
+ # @!attribute [rw] discontinuity_mode
168
+ # Specifies when flags marking discontinuities between fragments will
169
+ # be added to the media playlists. The default is `ALWAYS` when
170
+ # HLSFragmentSelector is `SERVER_TIMESTAMP`, and `NEVER` when it is
171
+ # `PRODUCER_TIMESTAMP`.
172
+ #
173
+ # Media players typically build a timeline of media content to play,
174
+ # based on the time stamps of each fragment. This means that if there
175
+ # is any overlap between fragments (as is typical if
176
+ # HLSFragmentSelector is `SERVER_TIMESTAMP`), the media player
177
+ # timeline has small gaps between fragments in some places, and
178
+ # overwrites frames in other places. When there are discontinuity
179
+ # flags between fragments, the media player is expected to reset the
180
+ # timeline, resulting in the fragment being played immediately after
181
+ # the previous fragment. We recommend that you always have
182
+ # discontinuity flags between fragments if the fragment time stamps
183
+ # are not accurate or if fragments might be missing. You should not
184
+ # place discontinuity flags between fragments for the player timeline
185
+ # to accurately map to the producer time stamps.
186
+ # @return [String]
187
+ #
188
+ # @!attribute [rw] expires
189
+ # The time in seconds until the requested session expires. This value
190
+ # can be between 300 (5 minutes) and 43200 (12 hours).
191
+ #
192
+ # When a session expires, no new calls to `GetHLSMasterPlaylist`,
193
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or
194
+ # `GetMP4MediaFragment` can be made for that session.
195
+ #
196
+ # The default is 300 (5 minutes).
197
+ # @return [Integer]
198
+ #
199
+ # @!attribute [rw] max_media_playlist_fragment_results
200
+ # The maximum number of fragments that are returned in the HLS media
201
+ # playlists.
202
+ #
203
+ # When the `PlaybackMode` is `LIVE`, the most recent fragments are
204
+ # returned up to this value. When the `PlaybackMode` is `ON_DEMAND`,
205
+ # the oldest fragments are returned, up to this maximum number.
206
+ #
207
+ # When there are a higher number of fragments available in a live HLS
208
+ # media playlist, video players often buffer content before starting
209
+ # playback. Increasing the buffer size increases the playback latency,
210
+ # but it decreases the likelihood that rebuffering will occur during
211
+ # playback. We recommend that a live HLS media playlist have a minimum
212
+ # of 3 fragments and a maximum of 10 fragments.
213
+ #
214
+ # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
215
+ # `PlaybackMode` is `ON_DEMAND`.
216
+ #
217
+ # The maximum value of 1,000 fragments corresponds to more than 16
218
+ # minutes of video on streams with 1-second fragments, and more than 2
219
+ # 1/2 hours of video on streams with 10-second fragments.
220
+ # @return [Integer]
221
+ #
222
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURLInput AWS API Documentation
223
+ #
224
+ class GetHLSStreamingSessionURLInput < Struct.new(
225
+ :stream_name,
226
+ :stream_arn,
227
+ :playback_mode,
228
+ :hls_fragment_selector,
229
+ :discontinuity_mode,
230
+ :expires,
231
+ :max_media_playlist_fragment_results)
232
+ include Aws::Structure
233
+ end
234
+
235
+ # @!attribute [rw] hls_streaming_session_url
236
+ # The URL (containing the session token) that a media player can use
237
+ # to retrieve the HLS master playlist.
238
+ # @return [String]
239
+ #
240
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURLOutput AWS API Documentation
241
+ #
242
+ class GetHLSStreamingSessionURLOutput < Struct.new(
243
+ :hls_streaming_session_url)
244
+ include Aws::Structure
245
+ end
246
+
76
247
  # @note When making an API call, you may pass GetMediaForFragmentListInput
77
248
  # data as a hash:
78
249
  #
@@ -105,11 +276,9 @@ module Aws::KinesisVideoArchivedMedia
105
276
  # @!attribute [rw] payload
106
277
  # The payload that Kinesis Video Streams returns is a sequence of
107
278
  # chunks from the specified stream. For information about the chunks,
108
- # see
109
- # [PutMedia](docs.aws.amazon.com/acuity/latest/dg/API_dataplane_PutMedia.html).
110
- # The chunks that Kinesis Video Streams returns in the
111
- # `GetMediaForFragmentList` call also include the following additional
112
- # Matroska (MKV) tags:
279
+ # see [PutMedia][1]. The chunks that Kinesis Video Streams returns in
280
+ # the `GetMediaForFragmentList` call also include the following
281
+ # additional Matroska (MKV) tags:
113
282
  #
114
283
  # * AWS\_KINESISVIDEO\_FRAGMENT\_NUMBER - Fragment number returned in
115
284
  # the chunk.
@@ -130,6 +299,10 @@ module Aws::KinesisVideoArchivedMedia
130
299
  #
131
300
  # * AWS\_KINESISVIDEO\_EXCEPTION\_MESSAGE - A text description of the
132
301
  # exception
302
+ #
303
+ #
304
+ #
305
+ # [1]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html
133
306
  # @return [IO]
134
307
  #
135
308
  # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetMediaForFragmentListOutput AWS API Documentation
@@ -140,6 +313,126 @@ module Aws::KinesisVideoArchivedMedia
140
313
  include Aws::Structure
141
314
  end
142
315
 
316
+ # Contains the range of time stamps for the requested media, and the
317
+ # source of the time stamps.
318
+ #
319
+ # @note When making an API call, you may pass HLSFragmentSelector
320
+ # data as a hash:
321
+ #
322
+ # {
323
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
324
+ # timestamp_range: {
325
+ # start_timestamp: Time.now,
326
+ # end_timestamp: Time.now,
327
+ # },
328
+ # }
329
+ #
330
+ # @!attribute [rw] fragment_selector_type
331
+ # The source of the time stamps for the requested media.
332
+ #
333
+ # When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
334
+ # GetHLSStreamingSessionURLInput$PlaybackMode is `ON_DEMAND`, the
335
+ # first fragment ingested with a producer time stamp within the
336
+ # specified FragmentSelector$TimestampRange is included in the media
337
+ # playlist. In addition, the fragments with producer time stamps
338
+ # within the `TimestampRange` ingested immediately following the first
339
+ # fragment (up to the
340
+ # GetHLSStreamingSessionURLInput$MaxMediaPlaylistFragmentResults
341
+ # value) are included.
342
+ #
343
+ # Fragments that have duplicate producer time stamps are deduplicated.
344
+ # This means that if producers are producing a stream of fragments
345
+ # with producer time stamps that are approximately equal to the true
346
+ # clock time, the HLS media playlists will contain all of the
347
+ # fragments within the requested time stamp range. If some fragments
348
+ # are ingested within the same time range and very different points in
349
+ # time, only the oldest ingested collection of fragments are returned.
350
+ #
351
+ # When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
352
+ # GetHLSStreamingSessionURLInput$PlaybackMode is `LIVE`, the producer
353
+ # time stamps are used in the MP4 fragments and for deduplication. But
354
+ # the most recently ingested fragments based on server time stamps are
355
+ # included in the HLS media playlist. This means that even if
356
+ # fragments ingested in the past have producer time stamps with values
357
+ # now, they are not included in the HLS media playlist.
358
+ #
359
+ # The default is `SERVER_TIMESTAMP`.
360
+ # @return [String]
361
+ #
362
+ # @!attribute [rw] timestamp_range
363
+ # The start and end of the time stamp range for the requested media.
364
+ #
365
+ # This value should not be present if `PlaybackType` is `LIVE`.
366
+ # @return [Types::HLSTimestampRange]
367
+ #
368
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/HLSFragmentSelector AWS API Documentation
369
+ #
370
+ class HLSFragmentSelector < Struct.new(
371
+ :fragment_selector_type,
372
+ :timestamp_range)
373
+ include Aws::Structure
374
+ end
375
+
376
+ # The start and end of the time stamp range for the requested media.
377
+ #
378
+ # This value should not be present if `PlaybackType` is `LIVE`.
379
+ #
380
+ # <note markdown="1"> The values in the `HLSTimestampRange` are inclusive. Fragments that
381
+ # begin before the start time but continue past it, or fragments that
382
+ # begin before the end time but continue past it, are included in the
383
+ # session.
384
+ #
385
+ # </note>
386
+ #
387
+ # @note When making an API call, you may pass HLSTimestampRange
388
+ # data as a hash:
389
+ #
390
+ # {
391
+ # start_timestamp: Time.now,
392
+ # end_timestamp: Time.now,
393
+ # }
394
+ #
395
+ # @!attribute [rw] start_timestamp
396
+ # The start of the time stamp range for the requested media.
397
+ #
398
+ # If the `HLSTimestampRange` value is specified, the `StartTimestamp`
399
+ # value is required.
400
+ #
401
+ # <note markdown="1"> This value is inclusive. Fragments that start before the
402
+ # `StartTimestamp` and continue past it are included in the session.
403
+ # If `FragmentSelectorType` is `SERVER_TIMESTAMP`, the
404
+ # `StartTimestamp` must be later than the stream head.
405
+ #
406
+ # </note>
407
+ # @return [Time]
408
+ #
409
+ # @!attribute [rw] end_timestamp
410
+ # The end of the time stamp range for the requested media. This value
411
+ # must be within 3 hours of the specified `StartTimestamp`, and it
412
+ # must be later than the `StartTimestamp` value.
413
+ #
414
+ # If `FragmentSelectorType` for the request is `SERVER_TIMESTAMP`,
415
+ # this value must be in the past.
416
+ #
417
+ # If the `HLSTimestampRange` value is specified, the `EndTimestamp`
418
+ # value is required.
419
+ #
420
+ # <note markdown="1"> This value is inclusive. The `EndTimestamp` is compared to the
421
+ # (starting) time stamp of the fragment. Fragments that start before
422
+ # the `EndTimestamp` value and continue past it are included in the
423
+ # session.
424
+ #
425
+ # </note>
426
+ # @return [Time]
427
+ #
428
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/HLSTimestampRange AWS API Documentation
429
+ #
430
+ class HLSTimestampRange < Struct.new(
431
+ :start_timestamp,
432
+ :end_timestamp)
433
+ include Aws::Structure
434
+ end
435
+
143
436
  # @note When making an API call, you may pass ListFragmentsInput
144
437
  # data as a hash:
145
438
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-kinesisvideoarchivedmedia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-26 00:00:00.000000000 Z
11
+ date: 2018-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core