aws-sdk-kinesisvideoarchivedmedia 1.16.0 → 1.17.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: 7f983615a3b757d4ca06b404645a2ec26bdf62ba
4
- data.tar.gz: 177654450b09e52ca906c5e49a036878e602a0cc
3
+ metadata.gz: 95afbb9a6043fd08e4dd249c3b62bab68eb27617
4
+ data.tar.gz: b2999bac55287f27f509a1deac6df995cc980a73
5
5
  SHA512:
6
- metadata.gz: bdd217b290c50f315a36ab0d169aeab8b244d75c6b3be5ccab99f78db8783ace9a44cd33396ec767915056ca176aaa65701e6570f9112e68782f1c416ae942ce
7
- data.tar.gz: 95226f28f0a504c521a48c75870a46b2eb1df898ed6a4c53133305d6592609d3dfdf9b8f6150ade079283bd85085d6ef321857569cd382fba908c5e2ef48b382
6
+ metadata.gz: c43d018a7da30b83dc66d7930bcee345b4e17ff9c36c1a4e5219d35407165bb6ab99b79021ce4d488d93058d5327b235e2426bc8c4cc70787a84ec0d1a941b03
7
+ data.tar.gz: 6c214bafde60fb22e28bb775eeb9824b16fd890030f50fe9ef24cadaaecd885ea4a14df24063c605a95c015129b259fb3b2513b2ac6c19b9488787992ddc93cc
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-kinesisvideoarchivedmedia/customizations'
42
42
  # @service
43
43
  module Aws::KinesisVideoArchivedMedia
44
44
 
45
- GEM_VERSION = '1.16.0'
45
+ GEM_VERSION = '1.17.0'
46
46
 
47
47
  end
@@ -254,36 +254,385 @@ module Aws::KinesisVideoArchivedMedia
254
254
 
255
255
  # @!group API Operations
256
256
 
257
+ # Retrieves an MPEG Dynamic Adaptive Streaming over HTTP (DASH) URL for
258
+ # the stream. You can then open the URL in a media player to view the
259
+ # stream contents.
260
+ #
261
+ # Both the `StreamName` and the `StreamARN` parameters are optional, but
262
+ # you must specify either the `StreamName` or the `StreamARN` when
263
+ # invoking this API operation.
264
+ #
265
+ # An Amazon Kinesis video stream has the following requirements for
266
+ # providing data through MPEG-DASH:
267
+ #
268
+ # * The media must contain h.264 or h.265 encoded video and, optionally,
269
+ # AAC or G.711 encoded audio. Specifically, the codec id of track 1
270
+ # should be `V_MPEG/ISO/AVC` (for h.264) or V\_MPEGH/ISO/HEVC (for
271
+ # H.265). Optionally, the codec id of track 2 should be `A_AAC` (for
272
+ # AAC) or A\_MS/ACM (for G.711).
273
+ #
274
+ # * Data retention must be greater than 0.
275
+ #
276
+ # * The video track of each fragment must contain codec private data in
277
+ # the Advanced Video Coding (AVC) for H.264 format and HEVC for H.265
278
+ # format. For more information, see [MPEG-4 specification ISO/IEC
279
+ # 14496-15][1]. For information about adapting stream data to a given
280
+ # format, see [NAL Adaptation Flags][2].
281
+ #
282
+ # * The audio track (if present) of each fragment must contain codec
283
+ # private data in the AAC format ([AAC specification ISO/IEC
284
+ # 13818-7][3]) or the [MS Wave format][4].
285
+ #
286
+ # The following procedure shows how to use MPEG-DASH with Kinesis Video
287
+ # Streams:
288
+ #
289
+ # 1. Get an endpoint using [GetDataEndpoint][5], specifying
290
+ # `GET_DASH_STREAMING_SESSION_URL` for the `APIName` parameter.
291
+ #
292
+ # 2. Retrieve the MPEG-DASH URL using `GetDASHStreamingSessionURL`.
293
+ # Kinesis Video Streams creates an MPEG-DASH streaming session to be
294
+ # used for accessing content in a stream using the MPEG-DASH
295
+ # protocol. `GetDASHStreamingSessionURL` returns an authenticated
296
+ # URL (that includes an encrypted session token) for the session's
297
+ # MPEG-DASH *manifest* (the root resource needed for streaming with
298
+ # MPEG-DASH).
299
+ #
300
+ # <note markdown="1"> Don't share or store this token where an unauthorized entity
301
+ # could access it. The token provides access to the content of the
302
+ # stream. Safeguard the token with the same measures that you would
303
+ # use with your AWS credentials.
304
+ #
305
+ # </note>
306
+ #
307
+ # The media that is made available through the manifest consists
308
+ # only of the requested stream, time range, and format. No other
309
+ # media data (such as frames outside the requested window or
310
+ # alternate bitrates) is made available.
311
+ #
312
+ # 3. Provide the URL (containing the encrypted session token) for the
313
+ # MPEG-DASH manifest to a media player that supports the MPEG-DASH
314
+ # protocol. Kinesis Video Streams makes the initialization fragment,
315
+ # and media fragments available through the manifest URL. The
316
+ # initialization fragment contains the codec private data for the
317
+ # stream, and other data needed to set up the video or audio decoder
318
+ # and renderer. The media fragments contain encoded video frames or
319
+ # encoded audio samples.
320
+ #
321
+ # 4. The media player receives the authenticated URL and requests
322
+ # stream metadata and media data normally. When the media player
323
+ # requests data, it calls the following actions:
324
+ #
325
+ # * **GetDASHManifest:** Retrieves an MPEG DASH manifest, which
326
+ # contains the metadata for the media that you want to playback.
327
+ #
328
+ # * **GetMP4InitFragment:** Retrieves the MP4 initialization
329
+ # fragment. The media player typically loads the initialization
330
+ # fragment before loading any media fragments. This fragment
331
+ # contains the "`fytp`" and "`moov`" MP4 atoms, and the child
332
+ # atoms that are needed to initialize the media player decoder.
333
+ #
334
+ # The initialization fragment does not correspond to a fragment in
335
+ # a Kinesis video stream. It contains only the codec private data
336
+ # for the stream and respective track, which the media player
337
+ # needs to decode the media frames.
338
+ #
339
+ # * **GetMP4MediaFragment:** Retrieves MP4 media fragments. These
340
+ # fragments contain the "`moof`" and "`mdat`" MP4 atoms and
341
+ # their child atoms, containing the encoded fragment's media
342
+ # frames and their timestamps.
343
+ #
344
+ # <note markdown="1"> After the first media fragment is made available in a streaming
345
+ # session, any fragments that don't contain the same codec
346
+ # private data cause an error to be returned when those different
347
+ # media fragments are loaded. Therefore, the codec private data
348
+ # should not change between fragments in a session. This also
349
+ # means that the session fails if the fragments in a stream change
350
+ # from having only video to having both audio and video.
351
+ #
352
+ # </note>
353
+ #
354
+ # Data retrieved with this action is billable. See [Pricing][6]
355
+ # for details.
356
+ #
357
+ # <note markdown="1"> The following restrictions apply to MPEG-DASH sessions:
358
+ #
359
+ # * A streaming session URL should not be shared between players. The
360
+ # service might throttle a session if multiple media players are
361
+ # sharing it. For connection limits, see [Kinesis Video Streams
362
+ # Limits][7].
363
+ #
364
+ # * A Kinesis video stream can have a maximum of ten active MPEG-DASH
365
+ # streaming sessions. If a new session is created when the maximum
366
+ # number of sessions is already active, the oldest (earliest created)
367
+ # session is closed. The number of active `GetMedia` connections on a
368
+ # Kinesis video stream does not count against this limit, and the
369
+ # number of active MPEG-DASH sessions does not count against the
370
+ # active `GetMedia` connection limit.
371
+ #
372
+ # <note markdown="1"> The maximum limits for active HLS and MPEG-DASH streaming sessions
373
+ # are independent of each other.
374
+ #
375
+ # </note>
376
+ #
377
+ # </note>
378
+ #
379
+ # You can monitor the amount of data that the media player consumes by
380
+ # monitoring the `GetMP4MediaFragment.OutgoingBytes` Amazon CloudWatch
381
+ # metric. For information about using CloudWatch to monitor Kinesis
382
+ # Video Streams, see [Monitoring Kinesis Video Streams][8]. For pricing
383
+ # information, see [Amazon Kinesis Video Streams Pricing][6] and [AWS
384
+ # Pricing][9]. Charges for both HLS sessions and outgoing AWS data
385
+ # apply.
386
+ #
387
+ # For more information about HLS, see [HTTP Live Streaming][10] on the
388
+ # [Apple Developer site][11].
389
+ #
390
+ # If an error is thrown after invoking a Kinesis Video Streams archived
391
+ # media API, in addition to the HTTP status code and the response body,
392
+ # it includes the following pieces of information:
393
+ #
394
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
395
+ # in addition to what the HTTP status code provides.
396
+ #
397
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
398
+ # AWS, the support team can better diagnose the problem if given the
399
+ # Request Id.
400
+ #
401
+ # Both the HTTP status code and the ErrorType header can be utilized to
402
+ # make programmatic decisions about whether errors are retry-able and
403
+ # under what conditions, as well as provide information on what actions
404
+ # the client programmer might need to take in order to successfully try
405
+ # again.
406
+ #
407
+ # For more information, see the **Errors** section at the bottom of
408
+ # this
409
+ # topic, as well as [Common Errors][12].
410
+ #
411
+ #
412
+ #
413
+ # [1]: https://www.iso.org/standard/55980.html
414
+ # [2]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html
415
+ # [3]: https://www.iso.org/standard/43345.html
416
+ # [4]: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
417
+ # [5]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html
418
+ # [6]: https://aws.amazon.com/kinesis/video-streams/pricing/
419
+ # [7]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html
420
+ # [8]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html
421
+ # [9]: https://aws.amazon.com/pricing/
422
+ # [10]: https://developer.apple.com/streaming/
423
+ # [11]: https://developer.apple.com
424
+ # [12]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
425
+ #
426
+ # @option params [String] :stream_name
427
+ # The name of the stream for which to retrieve the MPEG-DASH manifest
428
+ # URL.
429
+ #
430
+ # You must specify either the `StreamName` or the `StreamARN`.
431
+ #
432
+ # @option params [String] :stream_arn
433
+ # The Amazon Resource Name (ARN) of the stream for which to retrieve the
434
+ # MPEG-DASH manifest URL.
435
+ #
436
+ # You must specify either the `StreamName` or the `StreamARN`.
437
+ #
438
+ # @option params [String] :playback_mode
439
+ # Whether to retrieve live, live replay, or archived, on-demand data.
440
+ #
441
+ # Features of the three types of sessions include the following:
442
+ #
443
+ # * <b> <code>LIVE</code> </b>\: For sessions of this type, the
444
+ # MPEG-DASH manifest is continually updated with the latest fragments
445
+ # as they become available. We recommend that the media player
446
+ # retrieve a new manifest on a one-second interval. When this type of
447
+ # session is played in a media player, the user interface typically
448
+ # displays a "live" notification, with no scrubber control for
449
+ # choosing the position in the playback window to display.
450
+ #
451
+ # <note markdown="1"> In `LIVE` mode, the newest available fragments are included in an
452
+ # MPEG-DASH manifest, even if there is a gap between fragments (that
453
+ # is, if a fragment is missing). A gap like this might cause a media
454
+ # player to halt or cause a jump in playback. In this mode, fragments
455
+ # are not added to the MPEG-DASH manifest if they are older than the
456
+ # newest fragment in the playlist. If the missing fragment becomes
457
+ # available after a subsequent fragment is added to the manifest, the
458
+ # older fragment is not added, and the gap is not filled.
459
+ #
460
+ # </note>
461
+ #
462
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
463
+ # MPEG-DASH manifest is updated similarly to how it is updated for
464
+ # `LIVE` mode except that it starts by including fragments from a
465
+ # given start time. Instead of fragments being added as they are
466
+ # ingested, fragments are added as the duration of the next fragment
467
+ # elapses. For example, if the fragments in the session are two
468
+ # seconds long, then a new fragment is added to the manifest every two
469
+ # seconds. This mode is useful to be able to start playback from when
470
+ # an event is detected and continue live streaming media that has not
471
+ # yet been ingested as of the time of the session creation. This mode
472
+ # is also useful to stream previously archived media without being
473
+ # limited by the 1,000 fragment limit in the `ON_DEMAND` mode.
474
+ #
475
+ # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the
476
+ # MPEG-DASH manifest contains all the fragments for the session, up to
477
+ # the number that is specified in `MaxMediaPlaylistFragmentResults`.
478
+ # The manifest must be retrieved only once for each session. When this
479
+ # type of session is played in a media player, the user interface
480
+ # typically displays a scrubber control for choosing the position in
481
+ # the playback window to display.
482
+ #
483
+ # In all playback modes, if `FragmentSelectorType` is
484
+ # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
485
+ # same start timestamp, the fragment that has the larger fragment number
486
+ # (that is, the newer fragment) is included in the MPEG-DASH manifest.
487
+ # The other fragments are not included. Fragments that have different
488
+ # timestamps but have overlapping durations are still included in the
489
+ # MPEG-DASH manifest. This can lead to unexpected behavior in the media
490
+ # player.
491
+ #
492
+ # The default is `LIVE`.
493
+ #
494
+ # @option params [String] :display_fragment_timestamp
495
+ # Per the MPEG-DASH specification, the wall-clock time of fragments in
496
+ # the manifest file can be derived using attributes in the manifest
497
+ # itself. However, typically, MPEG-DASH compatible media players do not
498
+ # properly handle gaps in the media timeline. Kinesis Video Streams
499
+ # adjusts the media timeline in the manifest file to enable playback of
500
+ # media with discontinuities. Therefore, the wall-clock time derived
501
+ # from the manifest file may be inaccurate. If DisplayFragmentTimestamp
502
+ # is set to `ALWAYS`, the accurate fragment timestamp is added to each S
503
+ # element in the manifest file with the attribute name “kvs:ts”. A
504
+ # custom MPEG-DASH media player is necessary to leverage this custom
505
+ # attribute.
506
+ #
507
+ # The default value is `NEVER`. When DASHFragmentSelector is
508
+ # `SERVER_TIMESTAMP`, the timestamps will be the server start
509
+ # timestamps. Similarly, when DASHFragmentSelector is
510
+ # `PRODUCER_TIMESTAMP`, the timestamps will be the producer start
511
+ # timestamps.
512
+ #
513
+ # @option params [String] :display_fragment_number
514
+ # Fragments are identified in the manifest file based on their sequence
515
+ # number in the session. If DisplayFragmentNumber is set to `ALWAYS`,
516
+ # the Kinesis Video Streams fragment number is added to each S element
517
+ # in the manifest file with the attribute name “kvs:fn”. These fragment
518
+ # numbers can be used for logging or for use with other APIs (e.g.
519
+ # `GetMedia` and `GetMediaForFragmentList`). A custom MPEG-DASH media
520
+ # player is necessary to leverage these this custom attribute.
521
+ #
522
+ # The default value is `NEVER`.
523
+ #
524
+ # @option params [Types::DASHFragmentSelector] :dash_fragment_selector
525
+ # The time range of the requested fragment, and the source of the
526
+ # timestamps.
527
+ #
528
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
529
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE. If
530
+ # PlaybackMode is LIVE, the FragmentSelectorType can be set, but the
531
+ # TimestampRange should not be set. If PlaybackMode is ON_DEMAND or
532
+ # LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
533
+ # set.</p>
534
+ # `
535
+ #
536
+ # @option params [Integer] :expires
537
+ # The time in seconds until the requested session expires. This value
538
+ # can be between 300 (5 minutes) and 43200 (12 hours).
539
+ #
540
+ # When a session expires, no new calls to `GetDashManifest`,
541
+ # `GetMP4InitFragment`, or `GetMP4MediaFragment` can be made for that
542
+ # session.
543
+ #
544
+ # The default is 300 (5 minutes).
545
+ #
546
+ # @option params [Integer] :max_manifest_fragment_results
547
+ # The maximum number of fragments that are returned in the MPEG-DASH
548
+ # manifest.
549
+ #
550
+ # When the `PlaybackMode` is `LIVE`, the most recent fragments are
551
+ # returned up to this value. When the `PlaybackMode` is `ON_DEMAND`, the
552
+ # oldest fragments are returned, up to this maximum number.
553
+ #
554
+ # When there are a higher number of fragments available in a live
555
+ # MPEG-DASH manifest, video players often buffer content before starting
556
+ # playback. Increasing the buffer size increases the playback latency,
557
+ # but it decreases the likelihood that rebuffering will occur during
558
+ # playback. We recommend that a live MPEG-DASH manifest have a minimum
559
+ # of 3 fragments and a maximum of 10 fragments.
560
+ #
561
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
562
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
563
+ #
564
+ # The maximum value of 1,000 fragments corresponds to more than 16
565
+ # minutes of video on streams with 1-second fragments, and more than 2
566
+ # 1/2 hours of video on streams with 10-second fragments.
567
+ #
568
+ # @return [Types::GetDASHStreamingSessionURLOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
569
+ #
570
+ # * {Types::GetDASHStreamingSessionURLOutput#dash_streaming_session_url #dash_streaming_session_url} => String
571
+ #
572
+ # @example Request syntax with placeholder values
573
+ #
574
+ # resp = client.get_dash_streaming_session_url({
575
+ # stream_name: "StreamName",
576
+ # stream_arn: "ResourceARN",
577
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
578
+ # display_fragment_timestamp: "ALWAYS", # accepts ALWAYS, NEVER
579
+ # display_fragment_number: "ALWAYS", # accepts ALWAYS, NEVER
580
+ # dash_fragment_selector: {
581
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
582
+ # timestamp_range: {
583
+ # start_timestamp: Time.now,
584
+ # end_timestamp: Time.now,
585
+ # },
586
+ # },
587
+ # expires: 1,
588
+ # max_manifest_fragment_results: 1,
589
+ # })
590
+ #
591
+ # @example Response structure
592
+ #
593
+ # resp.dash_streaming_session_url #=> String
594
+ #
595
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetDASHStreamingSessionURL AWS API Documentation
596
+ #
597
+ # @overload get_dash_streaming_session_url(params = {})
598
+ # @param [Hash] params ({})
599
+ def get_dash_streaming_session_url(params = {}, options = {})
600
+ req = build_request(:get_dash_streaming_session_url, params)
601
+ req.send_request(options)
602
+ end
603
+
257
604
  # Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can
258
605
  # then open the URL in a browser or media player to view the stream
259
606
  # contents.
260
607
  #
261
- # You must specify either the `StreamName` or the `StreamARN`.
608
+ # Both the `StreamName` and the `StreamARN` parameters are optional, but
609
+ # you must specify either the `StreamName` or the `StreamARN` when
610
+ # invoking this API operation.
262
611
  #
263
612
  # An Amazon Kinesis video stream has the following requirements for
264
613
  # providing data through HLS:
265
614
  #
266
- # * The media must contain h.264 encoded video and, optionally, AAC
267
- # encoded audio. Specifically, the codec id of track 1 should be
268
- # `V_MPEG/ISO/AVC`. Optionally, the codec id of track 2 should be
269
- # `A_AAC`.
615
+ # * The media must contain h.264 or h.265 encoded video and, optionally,
616
+ # AAC encoded audio. Specifically, the codec id of track 1 should be
617
+ # `V_MPEG/ISO/AVC` (for h.264) or `V_MPEG/ISO/HEVC` (for h.265).
618
+ # Optionally, the codec id of track 2 should be `A_AAC`.
270
619
  #
271
620
  # * Data retention must be greater than 0.
272
621
  #
273
622
  # * The video track of each fragment must contain codec private data in
274
- # the Advanced Video Coding (AVC) for H.264 format ([MPEG-4
275
- # specification ISO/IEC 14496-15][1]). For information about adapting
276
- # stream data to a given format, see [NAL Adaptation Flags][2].
623
+ # the Advanced Video Coding (AVC) for H.264 format or HEVC for H.265
624
+ # format ([MPEG-4 specification ISO/IEC 14496-15][1]). For information
625
+ # about adapting stream data to a given format, see [NAL Adaptation
626
+ # Flags][2].
277
627
  #
278
628
  # * The audio track (if present) of each fragment must contain codec
279
629
  # private data in the AAC format ([AAC specification ISO/IEC
280
630
  # 13818-7][3]).
281
631
  #
282
632
  # Kinesis Video Streams HLS sessions contain fragments in the fragmented
283
- # MPEG-4 form (also called fMP4 or CMAF), rather than the MPEG-2 form
284
- # (also called TS chunks, which the HLS specification also supports).
285
- # For more information about HLS fragment types, see the [HLS
286
- # specification][4].
633
+ # MPEG-4 form (also called fMP4 or CMAF) or the MPEG-2 form (also called
634
+ # TS chunks, which the HLS specification also supports). For more
635
+ # information about HLS fragment types, see the [HLS specification][4].
287
636
  #
288
637
  # The following procedure shows how to use HLS with Kinesis Video
289
638
  # Streams:
@@ -390,7 +739,7 @@ module Aws::KinesisVideoArchivedMedia
390
739
  # sharing it. For connection limits, see [Kinesis Video Streams
391
740
  # Limits][7].
392
741
  #
393
- # * A Kinesis video stream can have a maximum of five active HLS
742
+ # * A Kinesis video stream can have a maximum of ten active HLS
394
743
  # streaming sessions. If a new session is created when the maximum
395
744
  # number of sessions is already active, the oldest (earliest created)
396
745
  # session is closed. The number of active `GetMedia` connections on a
@@ -398,6 +747,11 @@ module Aws::KinesisVideoArchivedMedia
398
747
  # number of active HLS sessions does not count against the active
399
748
  # `GetMedia` connection limit.
400
749
  #
750
+ # <note markdown="1"> The maximum limits for active HLS and MPEG-DASH streaming sessions
751
+ # are independent of each other.
752
+ #
753
+ # </note>
754
+ #
401
755
  # </note>
402
756
  #
403
757
  # You can monitor the amount of data that the media player consumes by
@@ -411,6 +765,27 @@ module Aws::KinesisVideoArchivedMedia
411
765
  # For more information about HLS, see [HTTP Live Streaming][10] on the
412
766
  # [Apple Developer site][11].
413
767
  #
768
+ # If an error is thrown after invoking a Kinesis Video Streams archived
769
+ # media API, in addition to the HTTP status code and the response body,
770
+ # it includes the following pieces of information:
771
+ #
772
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
773
+ # in addition to what the HTTP status code provides.
774
+ #
775
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
776
+ # AWS, the support team can better diagnose the problem if given the
777
+ # Request Id.
778
+ #
779
+ # Both the HTTP status code and the ErrorType header can be utilized to
780
+ # make programmatic decisions about whether errors are retry-able and
781
+ # under what conditions, as well as provide information on what actions
782
+ # the client programmer might need to take in order to successfully try
783
+ # again.
784
+ #
785
+ # For more information, see the **Errors** section at the bottom of
786
+ # this
787
+ # topic, as well as [Common Errors][12].
788
+ #
414
789
  #
415
790
  #
416
791
  # [1]: https://www.iso.org/standard/55980.html
@@ -424,6 +799,7 @@ module Aws::KinesisVideoArchivedMedia
424
799
  # [9]: https://aws.amazon.com/pricing/
425
800
  # [10]: https://developer.apple.com/streaming/
426
801
  # [11]: https://developer.apple.com
802
+ # [12]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
427
803
  #
428
804
  # @option params [String] :stream_name
429
805
  # The name of the stream for which to retrieve the HLS master playlist
@@ -438,9 +814,9 @@ module Aws::KinesisVideoArchivedMedia
438
814
  # You must specify either the `StreamName` or the `StreamARN`.
439
815
  #
440
816
  # @option params [String] :playback_mode
441
- # Whether to retrieve live or archived, on-demand data.
817
+ # Whether to retrieve live, live replay, or archived, on-demand data.
442
818
  #
443
- # Features of the two types of session include the following:
819
+ # Features of the three types of sessions include the following:
444
820
  #
445
821
  # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
446
822
  # media playlist is continually updated with the latest fragments as
@@ -461,6 +837,20 @@ module Aws::KinesisVideoArchivedMedia
461
837
  #
462
838
  # </note>
463
839
  #
840
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
841
+ # HLS media playlist is updated similarly to how it is updated for
842
+ # `LIVE` mode except that it starts by including fragments from a
843
+ # given start time. Instead of fragments being added as they are
844
+ # ingested, fragments are added as the duration of the next fragment
845
+ # elapses. For example, if the fragments in the session are two
846
+ # seconds long, then a new fragment is added to the media playlist
847
+ # every two seconds. This mode is useful to be able to start playback
848
+ # from when an event is detected and continue live streaming media
849
+ # that has not yet been ingested as of the time of the session
850
+ # creation. This mode is also useful to stream previously archived
851
+ # media without being limited by the 1,000 fragment limit in the
852
+ # `ON_DEMAND` mode.
853
+ #
464
854
  # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the HLS
465
855
  # media playlist contains all the fragments for the session, up to the
466
856
  # number that is specified in `MaxMediaPlaylistFragmentResults`. The
@@ -469,7 +859,7 @@ module Aws::KinesisVideoArchivedMedia
469
859
  # typically displays a scrubber control for choosing the position in
470
860
  # the playback window to display.
471
861
  #
472
- # In both playback modes, if `FragmentSelectorType` is
862
+ # In all playback modes, if `FragmentSelectorType` is
473
863
  # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
474
864
  # same start timestamp, the fragment that has the larger fragment number
475
865
  # (that is, the newer fragment) is included in the HLS media playlist.
@@ -484,11 +874,13 @@ module Aws::KinesisVideoArchivedMedia
484
874
  # The time range of the requested fragment, and the source of the
485
875
  # timestamps.
486
876
  #
487
- # This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
488
- # parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
489
- # is `LIVE`, the `FragmentSelectorType` can be set, but the
490
- # `TimestampRange` should not be set. If `PlaybackMode` is `ON_DEMAND`,
491
- # both `FragmentSelectorType` and `TimestampRange` must be set.
877
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
878
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE. If
879
+ # PlaybackMode is LIVE, the FragmentSelectorType can be set, but the
880
+ # TimestampRange should not be set. If PlaybackMode is ON_DEMAND or
881
+ # LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
882
+ # set.</p>
883
+ # `
492
884
  #
493
885
  # @option params [String] :container_format
494
886
  # Specifies which format should be used for packaging the media.
@@ -543,8 +935,8 @@ module Aws::KinesisVideoArchivedMedia
543
935
  # can be between 300 (5 minutes) and 43200 (12 hours).
544
936
  #
545
937
  # When a session expires, no new calls to `GetHLSMasterPlaylist`,
546
- # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or `GetMP4MediaFragment`
547
- # can be made for that session.
938
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, `GetMP4MediaFragment`, or
939
+ # `GetTSFragment` can be made for that session.
548
940
  #
549
941
  # The default is 300 (5 minutes).
550
942
  #
@@ -563,8 +955,8 @@ module Aws::KinesisVideoArchivedMedia
563
955
  # playback. We recommend that a live HLS media playlist have a minimum
564
956
  # of 3 fragments and a maximum of 10 fragments.
565
957
  #
566
- # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
567
- # `PlaybackMode` is `ON_DEMAND`.
958
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
959
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
568
960
  #
569
961
  # The maximum value of 1,000 fragments corresponds to more than 16
570
962
  # minutes of video on streams with 1-second fragments, and more than 2
@@ -579,7 +971,7 @@ module Aws::KinesisVideoArchivedMedia
579
971
  # resp = client.get_hls_streaming_session_url({
580
972
  # stream_name: "StreamName",
581
973
  # stream_arn: "ResourceARN",
582
- # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
974
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
583
975
  # hls_fragment_selector: {
584
976
  # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
585
977
  # timestamp_range: {
@@ -626,9 +1018,31 @@ module Aws::KinesisVideoArchivedMedia
626
1018
  # megabytes per second (or 200 megabits per second) during a
627
1019
  # `GetMediaForFragmentList` session.
628
1020
  #
1021
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1022
+ # media API, in addition to the HTTP status code and the response body,
1023
+ # it includes the following pieces of information:
1024
+ #
1025
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1026
+ # in addition to what the HTTP status code provides.
1027
+ #
1028
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1029
+ # AWS, the support team can better diagnose the problem if given the
1030
+ # Request Id.
1031
+ #
1032
+ # Both the HTTP status code and the ErrorType header can be utilized to
1033
+ # make programmatic decisions about whether errors are retry-able and
1034
+ # under what conditions, as well as provide information on what actions
1035
+ # the client programmer might need to take in order to successfully try
1036
+ # again.
1037
+ #
1038
+ # For more information, see the **Errors** section at the bottom of
1039
+ # this
1040
+ # topic, as well as [Common Errors][2].
1041
+ #
629
1042
  #
630
1043
  #
631
1044
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1045
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
632
1046
  #
633
1047
  # @option params [required, String] :stream_name
634
1048
  # The name of the stream from which to retrieve fragment media.
@@ -678,9 +1092,31 @@ module Aws::KinesisVideoArchivedMedia
678
1092
  #
679
1093
  # </note>
680
1094
  #
1095
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1096
+ # media API, in addition to the HTTP status code and the response body,
1097
+ # it includes the following pieces of information:
1098
+ #
1099
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1100
+ # in addition to what the HTTP status code provides.
1101
+ #
1102
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1103
+ # AWS, the support team can better diagnose the problem if given the
1104
+ # Request Id.
1105
+ #
1106
+ # Both the HTTP status code and the ErrorType header can be utilized to
1107
+ # make programmatic decisions about whether errors are retry-able and
1108
+ # under what conditions, as well as provide information on what actions
1109
+ # the client programmer might need to take in order to successfully try
1110
+ # again.
1111
+ #
1112
+ # For more information, see the **Errors** section at the bottom of
1113
+ # this
1114
+ # topic, as well as [Common Errors][2].
1115
+ #
681
1116
  #
682
1117
  #
683
1118
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1119
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
684
1120
  #
685
1121
  # @option params [required, String] :stream_name
686
1122
  # The name of the stream from which to retrieve a fragment list.
@@ -751,7 +1187,7 @@ module Aws::KinesisVideoArchivedMedia
751
1187
  params: params,
752
1188
  config: config)
753
1189
  context[:gem_name] = 'aws-sdk-kinesisvideoarchivedmedia'
754
- context[:gem_version] = '1.16.0'
1190
+ context[:gem_version] = '1.17.0'
755
1191
  Seahorse::Client::Request.new(handlers, context)
756
1192
  end
757
1193
 
@@ -14,8 +14,13 @@ module Aws::KinesisVideoArchivedMedia
14
14
  ClientLimitExceededException = Shapes::StructureShape.new(name: 'ClientLimitExceededException')
15
15
  ContainerFormat = Shapes::StringShape.new(name: 'ContainerFormat')
16
16
  ContentType = Shapes::StringShape.new(name: 'ContentType')
17
- DiscontinuityMode = Shapes::StringShape.new(name: 'DiscontinuityMode')
18
- DisplayFragmentTimestamp = Shapes::StringShape.new(name: 'DisplayFragmentTimestamp')
17
+ DASHDisplayFragmentNumber = Shapes::StringShape.new(name: 'DASHDisplayFragmentNumber')
18
+ DASHDisplayFragmentTimestamp = Shapes::StringShape.new(name: 'DASHDisplayFragmentTimestamp')
19
+ DASHFragmentSelector = Shapes::StructureShape.new(name: 'DASHFragmentSelector')
20
+ DASHFragmentSelectorType = Shapes::StringShape.new(name: 'DASHFragmentSelectorType')
21
+ DASHPlaybackMode = Shapes::StringShape.new(name: 'DASHPlaybackMode')
22
+ DASHStreamingSessionURL = Shapes::StringShape.new(name: 'DASHStreamingSessionURL')
23
+ DASHTimestampRange = Shapes::StructureShape.new(name: 'DASHTimestampRange')
19
24
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
20
25
  Expires = Shapes::IntegerShape.new(name: 'Expires')
21
26
  Fragment = Shapes::StructureShape.new(name: 'Fragment')
@@ -24,12 +29,17 @@ module Aws::KinesisVideoArchivedMedia
24
29
  FragmentNumberString = Shapes::StringShape.new(name: 'FragmentNumberString')
25
30
  FragmentSelector = Shapes::StructureShape.new(name: 'FragmentSelector')
26
31
  FragmentSelectorType = Shapes::StringShape.new(name: 'FragmentSelectorType')
32
+ GetDASHStreamingSessionURLInput = Shapes::StructureShape.new(name: 'GetDASHStreamingSessionURLInput')
33
+ GetDASHStreamingSessionURLOutput = Shapes::StructureShape.new(name: 'GetDASHStreamingSessionURLOutput')
27
34
  GetHLSStreamingSessionURLInput = Shapes::StructureShape.new(name: 'GetHLSStreamingSessionURLInput')
28
35
  GetHLSStreamingSessionURLOutput = Shapes::StructureShape.new(name: 'GetHLSStreamingSessionURLOutput')
29
36
  GetMediaForFragmentListInput = Shapes::StructureShape.new(name: 'GetMediaForFragmentListInput')
30
37
  GetMediaForFragmentListOutput = Shapes::StructureShape.new(name: 'GetMediaForFragmentListOutput')
38
+ HLSDiscontinuityMode = Shapes::StringShape.new(name: 'HLSDiscontinuityMode')
39
+ HLSDisplayFragmentTimestamp = Shapes::StringShape.new(name: 'HLSDisplayFragmentTimestamp')
31
40
  HLSFragmentSelector = Shapes::StructureShape.new(name: 'HLSFragmentSelector')
32
41
  HLSFragmentSelectorType = Shapes::StringShape.new(name: 'HLSFragmentSelectorType')
42
+ HLSPlaybackMode = Shapes::StringShape.new(name: 'HLSPlaybackMode')
33
43
  HLSStreamingSessionURL = Shapes::StringShape.new(name: 'HLSStreamingSessionURL')
34
44
  HLSTimestampRange = Shapes::StructureShape.new(name: 'HLSTimestampRange')
35
45
  InvalidArgumentException = Shapes::StructureShape.new(name: 'InvalidArgumentException')
@@ -42,7 +52,6 @@ module Aws::KinesisVideoArchivedMedia
42
52
  NotAuthorizedException = Shapes::StructureShape.new(name: 'NotAuthorizedException')
43
53
  PageLimit = Shapes::IntegerShape.new(name: 'PageLimit')
44
54
  Payload = Shapes::BlobShape.new(name: 'Payload', streaming: true)
45
- PlaybackMode = Shapes::StringShape.new(name: 'PlaybackMode')
46
55
  ResourceARN = Shapes::StringShape.new(name: 'ResourceARN')
47
56
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
48
57
  StreamName = Shapes::StringShape.new(name: 'StreamName')
@@ -54,6 +63,14 @@ module Aws::KinesisVideoArchivedMedia
54
63
  ClientLimitExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
55
64
  ClientLimitExceededException.struct_class = Types::ClientLimitExceededException
56
65
 
66
+ DASHFragmentSelector.add_member(:fragment_selector_type, Shapes::ShapeRef.new(shape: DASHFragmentSelectorType, location_name: "FragmentSelectorType"))
67
+ DASHFragmentSelector.add_member(:timestamp_range, Shapes::ShapeRef.new(shape: DASHTimestampRange, location_name: "TimestampRange"))
68
+ DASHFragmentSelector.struct_class = Types::DASHFragmentSelector
69
+
70
+ DASHTimestampRange.add_member(:start_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "StartTimestamp"))
71
+ DASHTimestampRange.add_member(:end_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "EndTimestamp"))
72
+ DASHTimestampRange.struct_class = Types::DASHTimestampRange
73
+
57
74
  Fragment.add_member(:fragment_number, Shapes::ShapeRef.new(shape: String, location_name: "FragmentNumber"))
58
75
  Fragment.add_member(:fragment_size_in_bytes, Shapes::ShapeRef.new(shape: Long, location_name: "FragmentSizeInBytes"))
59
76
  Fragment.add_member(:producer_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "ProducerTimestamp"))
@@ -69,13 +86,26 @@ module Aws::KinesisVideoArchivedMedia
69
86
  FragmentSelector.add_member(:timestamp_range, Shapes::ShapeRef.new(shape: TimestampRange, required: true, location_name: "TimestampRange"))
70
87
  FragmentSelector.struct_class = Types::FragmentSelector
71
88
 
89
+ GetDASHStreamingSessionURLInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
90
+ GetDASHStreamingSessionURLInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
91
+ GetDASHStreamingSessionURLInput.add_member(:playback_mode, Shapes::ShapeRef.new(shape: DASHPlaybackMode, location_name: "PlaybackMode"))
92
+ GetDASHStreamingSessionURLInput.add_member(:display_fragment_timestamp, Shapes::ShapeRef.new(shape: DASHDisplayFragmentTimestamp, location_name: "DisplayFragmentTimestamp"))
93
+ GetDASHStreamingSessionURLInput.add_member(:display_fragment_number, Shapes::ShapeRef.new(shape: DASHDisplayFragmentNumber, location_name: "DisplayFragmentNumber"))
94
+ GetDASHStreamingSessionURLInput.add_member(:dash_fragment_selector, Shapes::ShapeRef.new(shape: DASHFragmentSelector, location_name: "DASHFragmentSelector"))
95
+ GetDASHStreamingSessionURLInput.add_member(:expires, Shapes::ShapeRef.new(shape: Expires, location_name: "Expires"))
96
+ GetDASHStreamingSessionURLInput.add_member(:max_manifest_fragment_results, Shapes::ShapeRef.new(shape: PageLimit, location_name: "MaxManifestFragmentResults"))
97
+ GetDASHStreamingSessionURLInput.struct_class = Types::GetDASHStreamingSessionURLInput
98
+
99
+ GetDASHStreamingSessionURLOutput.add_member(:dash_streaming_session_url, Shapes::ShapeRef.new(shape: DASHStreamingSessionURL, location_name: "DASHStreamingSessionURL"))
100
+ GetDASHStreamingSessionURLOutput.struct_class = Types::GetDASHStreamingSessionURLOutput
101
+
72
102
  GetHLSStreamingSessionURLInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
73
103
  GetHLSStreamingSessionURLInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
74
- GetHLSStreamingSessionURLInput.add_member(:playback_mode, Shapes::ShapeRef.new(shape: PlaybackMode, location_name: "PlaybackMode"))
104
+ GetHLSStreamingSessionURLInput.add_member(:playback_mode, Shapes::ShapeRef.new(shape: HLSPlaybackMode, location_name: "PlaybackMode"))
75
105
  GetHLSStreamingSessionURLInput.add_member(:hls_fragment_selector, Shapes::ShapeRef.new(shape: HLSFragmentSelector, location_name: "HLSFragmentSelector"))
76
106
  GetHLSStreamingSessionURLInput.add_member(:container_format, Shapes::ShapeRef.new(shape: ContainerFormat, location_name: "ContainerFormat"))
77
- GetHLSStreamingSessionURLInput.add_member(:discontinuity_mode, Shapes::ShapeRef.new(shape: DiscontinuityMode, location_name: "DiscontinuityMode"))
78
- GetHLSStreamingSessionURLInput.add_member(:display_fragment_timestamp, Shapes::ShapeRef.new(shape: DisplayFragmentTimestamp, location_name: "DisplayFragmentTimestamp"))
107
+ GetHLSStreamingSessionURLInput.add_member(:discontinuity_mode, Shapes::ShapeRef.new(shape: HLSDiscontinuityMode, location_name: "DiscontinuityMode"))
108
+ GetHLSStreamingSessionURLInput.add_member(:display_fragment_timestamp, Shapes::ShapeRef.new(shape: HLSDisplayFragmentTimestamp, location_name: "DisplayFragmentTimestamp"))
79
109
  GetHLSStreamingSessionURLInput.add_member(:expires, Shapes::ShapeRef.new(shape: Expires, location_name: "Expires"))
80
110
  GetHLSStreamingSessionURLInput.add_member(:max_media_playlist_fragment_results, Shapes::ShapeRef.new(shape: PageLimit, location_name: "MaxMediaPlaylistFragmentResults"))
81
111
  GetHLSStreamingSessionURLInput.struct_class = Types::GetHLSStreamingSessionURLInput
@@ -153,6 +183,22 @@ module Aws::KinesisVideoArchivedMedia
153
183
  "uid" => "kinesis-video-archived-media-2017-09-30",
154
184
  }
155
185
 
186
+ api.add_operation(:get_dash_streaming_session_url, Seahorse::Model::Operation.new.tap do |o|
187
+ o.name = "GetDASHStreamingSessionURL"
188
+ o.http_method = "POST"
189
+ o.http_request_uri = "/getDASHStreamingSessionURL"
190
+ o.input = Shapes::ShapeRef.new(shape: GetDASHStreamingSessionURLInput)
191
+ o.output = Shapes::ShapeRef.new(shape: GetDASHStreamingSessionURLOutput)
192
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
193
+ o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
194
+ o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
195
+ o.errors << Shapes::ShapeRef.new(shape: NotAuthorizedException)
196
+ o.errors << Shapes::ShapeRef.new(shape: UnsupportedStreamMediaTypeException)
197
+ o.errors << Shapes::ShapeRef.new(shape: NoDataRetentionException)
198
+ o.errors << Shapes::ShapeRef.new(shape: MissingCodecPrivateDataException)
199
+ o.errors << Shapes::ShapeRef.new(shape: InvalidCodecPrivateDataException)
200
+ end)
201
+
156
202
  api.add_operation(:get_hls_streaming_session_url, Seahorse::Model::Operation.new.tap do |o|
157
203
  o.name = "GetHLSStreamingSessionURL"
158
204
  o.http_method = "POST"
@@ -191,6 +237,12 @@ module Aws::KinesisVideoArchivedMedia
191
237
  o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
192
238
  o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
193
239
  o.errors << Shapes::ShapeRef.new(shape: NotAuthorizedException)
240
+ o[:pager] = Aws::Pager.new(
241
+ limit_key: "max_results",
242
+ tokens: {
243
+ "next_token" => "next_token"
244
+ }
245
+ )
194
246
  end)
195
247
  end
196
248
 
@@ -21,10 +21,133 @@ module Aws::KinesisVideoArchivedMedia
21
21
  include Aws::Structure
22
22
  end
23
23
 
24
+ # Contains the range of timestamps for the requested media, and the
25
+ # source of the timestamps.
26
+ #
27
+ # @note When making an API call, you may pass DASHFragmentSelector
28
+ # data as a hash:
29
+ #
30
+ # {
31
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
32
+ # timestamp_range: {
33
+ # start_timestamp: Time.now,
34
+ # end_timestamp: Time.now,
35
+ # },
36
+ # }
37
+ #
38
+ # @!attribute [rw] fragment_selector_type
39
+ # The source of the timestamps for the requested media.
40
+ #
41
+ # When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
42
+ # GetDASHStreamingSessionURLInput$PlaybackMode is `ON_DEMAND` or
43
+ # `LIVE_REPLAY`, the first fragment ingested with a producer timestamp
44
+ # within the specified FragmentSelector$TimestampRange is included in
45
+ # the media playlist. In addition, the fragments with producer
46
+ # timestamps within the `TimestampRange` ingested immediately
47
+ # following the first fragment (up to the
48
+ # GetDASHStreamingSessionURLInput$MaxManifestFragmentResults value)
49
+ # are included.
50
+ #
51
+ # Fragments that have duplicate producer timestamps are deduplicated.
52
+ # This means that if producers are producing a stream of fragments
53
+ # with producer timestamps that are approximately equal to the true
54
+ # clock time, the MPEG-DASH manifest will contain all of the fragments
55
+ # within the requested timestamp range. If some fragments are ingested
56
+ # within the same time range and very different points in time, only
57
+ # the oldest ingested collection of fragments are returned.
58
+ #
59
+ # When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
60
+ # GetDASHStreamingSessionURLInput$PlaybackMode is `LIVE`, the producer
61
+ # timestamps are used in the MP4 fragments and for deduplication. But
62
+ # the most recently ingested fragments based on server timestamps are
63
+ # included in the MPEG-DASH manifest. This means that even if
64
+ # fragments ingested in the past have producer timestamps with values
65
+ # now, they are not included in the HLS media playlist.
66
+ #
67
+ # The default is `SERVER_TIMESTAMP`.
68
+ # @return [String]
69
+ #
70
+ # @!attribute [rw] timestamp_range
71
+ # The start and end of the timestamp range for the requested media.
72
+ #
73
+ # This value should not be present if `PlaybackType` is `LIVE`.
74
+ # @return [Types::DASHTimestampRange]
75
+ #
76
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/DASHFragmentSelector AWS API Documentation
77
+ #
78
+ class DASHFragmentSelector < Struct.new(
79
+ :fragment_selector_type,
80
+ :timestamp_range)
81
+ include Aws::Structure
82
+ end
83
+
84
+ # The start and end of the timestamp range for the requested media.
85
+ #
86
+ # This value should not be present if `PlaybackType` is `LIVE`.
87
+ #
88
+ # <note markdown="1"> The values in the `DASHimestampRange` are inclusive. Fragments that
89
+ # begin before the start time but continue past it, or fragments that
90
+ # begin before the end time but continue past it, are included in the
91
+ # session.
92
+ #
93
+ # </note>
94
+ #
95
+ # @note When making an API call, you may pass DASHTimestampRange
96
+ # data as a hash:
97
+ #
98
+ # {
99
+ # start_timestamp: Time.now,
100
+ # end_timestamp: Time.now,
101
+ # }
102
+ #
103
+ # @!attribute [rw] start_timestamp
104
+ # The start of the timestamp range for the requested media.
105
+ #
106
+ # If the `DASHTimestampRange` value is specified, the `StartTimestamp`
107
+ # value is required.
108
+ #
109
+ # <note markdown="1"> This value is inclusive. Fragments that start before the
110
+ # `StartTimestamp` and continue past it are included in the session.
111
+ # If `FragmentSelectorType` is `SERVER_TIMESTAMP`, the
112
+ # `StartTimestamp` must be later than the stream head.
113
+ #
114
+ # </note>
115
+ # @return [Time]
116
+ #
117
+ # @!attribute [rw] end_timestamp
118
+ # The end of the timestamp range for the requested media. This value
119
+ # must be within 3 hours of the specified `StartTimestamp`, and it
120
+ # must be later than the `StartTimestamp` value.
121
+ #
122
+ # If `FragmentSelectorType` for the request is `SERVER_TIMESTAMP`,
123
+ # this value must be in the past.
124
+ #
125
+ # The `EndTimestamp` value is required for `ON_DEMAND` mode, but
126
+ # optional for `LIVE_REPLAY` mode. If the `EndTimestamp` is not set
127
+ # for `LIVE_REPLAY` mode then the session will continue to include
128
+ # newly ingested fragments until the session expires.
129
+ #
130
+ # <note markdown="1"> This value is inclusive. The `EndTimestamp` is compared to the
131
+ # (starting) timestamp of the fragment. Fragments that start before
132
+ # the `EndTimestamp` value and continue past it are included in the
133
+ # session.
134
+ #
135
+ # </note>
136
+ # @return [Time]
137
+ #
138
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/DASHTimestampRange AWS API Documentation
139
+ #
140
+ class DASHTimestampRange < Struct.new(
141
+ :start_timestamp,
142
+ :end_timestamp)
143
+ include Aws::Structure
144
+ end
145
+
24
146
  # Represents a segment of video or other time-delimited data.
25
147
  #
26
148
  # @!attribute [rw] fragment_number
27
- # The index value of the fragment.
149
+ # The unique identifier of the fragment. This value monotonically
150
+ # increases based on the ingestion order.
28
151
  # @return [String]
29
152
  #
30
153
  # @!attribute [rw] fragment_size_in_bytes
@@ -103,13 +226,214 @@ module Aws::KinesisVideoArchivedMedia
103
226
  include Aws::Structure
104
227
  end
105
228
 
229
+ # @note When making an API call, you may pass GetDASHStreamingSessionURLInput
230
+ # data as a hash:
231
+ #
232
+ # {
233
+ # stream_name: "StreamName",
234
+ # stream_arn: "ResourceARN",
235
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
236
+ # display_fragment_timestamp: "ALWAYS", # accepts ALWAYS, NEVER
237
+ # display_fragment_number: "ALWAYS", # accepts ALWAYS, NEVER
238
+ # dash_fragment_selector: {
239
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
240
+ # timestamp_range: {
241
+ # start_timestamp: Time.now,
242
+ # end_timestamp: Time.now,
243
+ # },
244
+ # },
245
+ # expires: 1,
246
+ # max_manifest_fragment_results: 1,
247
+ # }
248
+ #
249
+ # @!attribute [rw] stream_name
250
+ # The name of the stream for which to retrieve the MPEG-DASH manifest
251
+ # URL.
252
+ #
253
+ # You must specify either the `StreamName` or the `StreamARN`.
254
+ # @return [String]
255
+ #
256
+ # @!attribute [rw] stream_arn
257
+ # The Amazon Resource Name (ARN) of the stream for which to retrieve
258
+ # the MPEG-DASH manifest URL.
259
+ #
260
+ # You must specify either the `StreamName` or the `StreamARN`.
261
+ # @return [String]
262
+ #
263
+ # @!attribute [rw] playback_mode
264
+ # Whether to retrieve live, live replay, or archived, on-demand data.
265
+ #
266
+ # Features of the three types of sessions include the following:
267
+ #
268
+ # * <b> <code>LIVE</code> </b>\: For sessions of this type, the
269
+ # MPEG-DASH manifest is continually updated with the latest
270
+ # fragments as they become available. We recommend that the media
271
+ # player retrieve a new manifest on a one-second interval. When this
272
+ # type of session is played in a media player, the user interface
273
+ # typically displays a "live" notification, with no scrubber
274
+ # control for choosing the position in the playback window to
275
+ # display.
276
+ #
277
+ # <note markdown="1"> In `LIVE` mode, the newest available fragments are included in an
278
+ # MPEG-DASH manifest, even if there is a gap between fragments (that
279
+ # is, if a fragment is missing). A gap like this might cause a media
280
+ # player to halt or cause a jump in playback. In this mode,
281
+ # fragments are not added to the MPEG-DASH manifest if they are
282
+ # older than the newest fragment in the playlist. If the missing
283
+ # fragment becomes available after a subsequent fragment is added to
284
+ # the manifest, the older fragment is not added, and the gap is not
285
+ # filled.
286
+ #
287
+ # </note>
288
+ #
289
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
290
+ # MPEG-DASH manifest is updated similarly to how it is updated for
291
+ # `LIVE` mode except that it starts by including fragments from a
292
+ # given start time. Instead of fragments being added as they are
293
+ # ingested, fragments are added as the duration of the next fragment
294
+ # elapses. For example, if the fragments in the session are two
295
+ # seconds long, then a new fragment is added to the manifest every
296
+ # two seconds. This mode is useful to be able to start playback from
297
+ # when an event is detected and continue live streaming media that
298
+ # has not yet been ingested as of the time of the session creation.
299
+ # This mode is also useful to stream previously archived media
300
+ # without being limited by the 1,000 fragment limit in the
301
+ # `ON_DEMAND` mode.
302
+ #
303
+ # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the
304
+ # MPEG-DASH manifest contains all the fragments for the session, up
305
+ # to the number that is specified in
306
+ # `MaxMediaPlaylistFragmentResults`. The manifest must be retrieved
307
+ # only once for each session. When this type of session is played in
308
+ # a media player, the user interface typically displays a scrubber
309
+ # control for choosing the position in the playback window to
310
+ # display.
311
+ #
312
+ # In all playback modes, if `FragmentSelectorType` is
313
+ # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
314
+ # same start timestamp, the fragment that has the larger fragment
315
+ # number (that is, the newer fragment) is included in the MPEG-DASH
316
+ # manifest. The other fragments are not included. Fragments that have
317
+ # different timestamps but have overlapping durations are still
318
+ # included in the MPEG-DASH manifest. This can lead to unexpected
319
+ # behavior in the media player.
320
+ #
321
+ # The default is `LIVE`.
322
+ # @return [String]
323
+ #
324
+ # @!attribute [rw] display_fragment_timestamp
325
+ # Per the MPEG-DASH specification, the wall-clock time of fragments in
326
+ # the manifest file can be derived using attributes in the manifest
327
+ # itself. However, typically, MPEG-DASH compatible media players do
328
+ # not properly handle gaps in the media timeline. Kinesis Video
329
+ # Streams adjusts the media timeline in the manifest file to enable
330
+ # playback of media with discontinuities. Therefore, the wall-clock
331
+ # time derived from the manifest file may be inaccurate. If
332
+ # DisplayFragmentTimestamp is set to `ALWAYS`, the accurate fragment
333
+ # timestamp is added to each S element in the manifest file with the
334
+ # attribute name “kvs:ts”. A custom MPEG-DASH media player is
335
+ # necessary to leverage this custom attribute.
336
+ #
337
+ # The default value is `NEVER`. When DASHFragmentSelector is
338
+ # `SERVER_TIMESTAMP`, the timestamps will be the server start
339
+ # timestamps. Similarly, when DASHFragmentSelector is
340
+ # `PRODUCER_TIMESTAMP`, the timestamps will be the producer start
341
+ # timestamps.
342
+ # @return [String]
343
+ #
344
+ # @!attribute [rw] display_fragment_number
345
+ # Fragments are identified in the manifest file based on their
346
+ # sequence number in the session. If DisplayFragmentNumber is set to
347
+ # `ALWAYS`, the Kinesis Video Streams fragment number is added to each
348
+ # S element in the manifest file with the attribute name “kvs:fn”.
349
+ # These fragment numbers can be used for logging or for use with other
350
+ # APIs (e.g. `GetMedia` and `GetMediaForFragmentList`). A custom
351
+ # MPEG-DASH media player is necessary to leverage these this custom
352
+ # attribute.
353
+ #
354
+ # The default value is `NEVER`.
355
+ # @return [String]
356
+ #
357
+ # @!attribute [rw] dash_fragment_selector
358
+ # The time range of the requested fragment, and the source of the
359
+ # timestamps.
360
+ #
361
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
362
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE.
363
+ # If PlaybackMode is LIVE, the FragmentSelectorType can be set, but
364
+ # the TimestampRange should not be set. If PlaybackMode is ON_DEMAND
365
+ # or LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
366
+ # set.</p>
367
+ # `
368
+ # @return [Types::DASHFragmentSelector]
369
+ #
370
+ # @!attribute [rw] expires
371
+ # The time in seconds until the requested session expires. This value
372
+ # can be between 300 (5 minutes) and 43200 (12 hours).
373
+ #
374
+ # When a session expires, no new calls to `GetDashManifest`,
375
+ # `GetMP4InitFragment`, or `GetMP4MediaFragment` can be made for that
376
+ # session.
377
+ #
378
+ # The default is 300 (5 minutes).
379
+ # @return [Integer]
380
+ #
381
+ # @!attribute [rw] max_manifest_fragment_results
382
+ # The maximum number of fragments that are returned in the MPEG-DASH
383
+ # manifest.
384
+ #
385
+ # When the `PlaybackMode` is `LIVE`, the most recent fragments are
386
+ # returned up to this value. When the `PlaybackMode` is `ON_DEMAND`,
387
+ # the oldest fragments are returned, up to this maximum number.
388
+ #
389
+ # When there are a higher number of fragments available in a live
390
+ # MPEG-DASH manifest, video players often buffer content before
391
+ # starting playback. Increasing the buffer size increases the playback
392
+ # latency, but it decreases the likelihood that rebuffering will occur
393
+ # during playback. We recommend that a live MPEG-DASH manifest have a
394
+ # minimum of 3 fragments and a maximum of 10 fragments.
395
+ #
396
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
397
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
398
+ #
399
+ # The maximum value of 1,000 fragments corresponds to more than 16
400
+ # minutes of video on streams with 1-second fragments, and more than 2
401
+ # 1/2 hours of video on streams with 10-second fragments.
402
+ # @return [Integer]
403
+ #
404
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetDASHStreamingSessionURLInput AWS API Documentation
405
+ #
406
+ class GetDASHStreamingSessionURLInput < Struct.new(
407
+ :stream_name,
408
+ :stream_arn,
409
+ :playback_mode,
410
+ :display_fragment_timestamp,
411
+ :display_fragment_number,
412
+ :dash_fragment_selector,
413
+ :expires,
414
+ :max_manifest_fragment_results)
415
+ include Aws::Structure
416
+ end
417
+
418
+ # @!attribute [rw] dash_streaming_session_url
419
+ # The URL (containing the session token) that a media player can use
420
+ # to retrieve the MPEG-DASH manifest.
421
+ # @return [String]
422
+ #
423
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetDASHStreamingSessionURLOutput AWS API Documentation
424
+ #
425
+ class GetDASHStreamingSessionURLOutput < Struct.new(
426
+ :dash_streaming_session_url)
427
+ include Aws::Structure
428
+ end
429
+
106
430
  # @note When making an API call, you may pass GetHLSStreamingSessionURLInput
107
431
  # data as a hash:
108
432
  #
109
433
  # {
110
434
  # stream_name: "StreamName",
111
435
  # stream_arn: "ResourceARN",
112
- # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
436
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
113
437
  # hls_fragment_selector: {
114
438
  # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
115
439
  # timestamp_range: {
@@ -139,9 +463,9 @@ module Aws::KinesisVideoArchivedMedia
139
463
  # @return [String]
140
464
  #
141
465
  # @!attribute [rw] playback_mode
142
- # Whether to retrieve live or archived, on-demand data.
466
+ # Whether to retrieve live, live replay, or archived, on-demand data.
143
467
  #
144
- # Features of the two types of session include the following:
468
+ # Features of the three types of sessions include the following:
145
469
  #
146
470
  # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
147
471
  # media playlist is continually updated with the latest fragments as
@@ -163,6 +487,20 @@ module Aws::KinesisVideoArchivedMedia
163
487
  #
164
488
  # </note>
165
489
  #
490
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
491
+ # HLS media playlist is updated similarly to how it is updated for
492
+ # `LIVE` mode except that it starts by including fragments from a
493
+ # given start time. Instead of fragments being added as they are
494
+ # ingested, fragments are added as the duration of the next fragment
495
+ # elapses. For example, if the fragments in the session are two
496
+ # seconds long, then a new fragment is added to the media playlist
497
+ # every two seconds. This mode is useful to be able to start
498
+ # playback from when an event is detected and continue live
499
+ # streaming media that has not yet been ingested as of the time of
500
+ # the session creation. This mode is also useful to stream
501
+ # previously archived media without being limited by the 1,000
502
+ # fragment limit in the `ON_DEMAND` mode.
503
+ #
166
504
  # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the
167
505
  # HLS media playlist contains all the fragments for the session, up
168
506
  # to the number that is specified in
@@ -172,7 +510,7 @@ module Aws::KinesisVideoArchivedMedia
172
510
  # control for choosing the position in the playback window to
173
511
  # display.
174
512
  #
175
- # In both playback modes, if `FragmentSelectorType` is
513
+ # In all playback modes, if `FragmentSelectorType` is
176
514
  # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
177
515
  # same start timestamp, the fragment that has the larger fragment
178
516
  # number (that is, the newer fragment) is included in the HLS media
@@ -188,12 +526,13 @@ module Aws::KinesisVideoArchivedMedia
188
526
  # The time range of the requested fragment, and the source of the
189
527
  # timestamps.
190
528
  #
191
- # This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
192
- # parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
193
- # is `LIVE`, the `FragmentSelectorType` can be set, but the
194
- # `TimestampRange` should not be set. If `PlaybackMode` is
195
- # `ON_DEMAND`, both `FragmentSelectorType` and `TimestampRange` must
196
- # be set.
529
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
530
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE.
531
+ # If PlaybackMode is LIVE, the FragmentSelectorType can be set, but
532
+ # the TimestampRange should not be set. If PlaybackMode is ON_DEMAND
533
+ # or LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
534
+ # set.</p>
535
+ # `
197
536
  # @return [Types::HLSFragmentSelector]
198
537
  #
199
538
  # @!attribute [rw] container_format
@@ -253,8 +592,8 @@ module Aws::KinesisVideoArchivedMedia
253
592
  # can be between 300 (5 minutes) and 43200 (12 hours).
254
593
  #
255
594
  # When a session expires, no new calls to `GetHLSMasterPlaylist`,
256
- # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or
257
- # `GetMP4MediaFragment` can be made for that session.
595
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, `GetMP4MediaFragment`,
596
+ # or `GetTSFragment` can be made for that session.
258
597
  #
259
598
  # The default is 300 (5 minutes).
260
599
  # @return [Integer]
@@ -274,8 +613,8 @@ module Aws::KinesisVideoArchivedMedia
274
613
  # playback. We recommend that a live HLS media playlist have a minimum
275
614
  # of 3 fragments and a maximum of 10 fragments.
276
615
  #
277
- # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
278
- # `PlaybackMode` is `ON_DEMAND`.
616
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
617
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
279
618
  #
280
619
  # The maximum value of 1,000 fragments corresponds to more than 16
281
620
  # minutes of video on streams with 1-second fragments, and more than 2
@@ -396,12 +735,12 @@ module Aws::KinesisVideoArchivedMedia
396
735
  # The source of the timestamps for the requested media.
397
736
  #
398
737
  # When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
399
- # GetHLSStreamingSessionURLInput$PlaybackMode is `ON_DEMAND`, the
400
- # first fragment ingested with a producer timestamp within the
401
- # specified FragmentSelector$TimestampRange is included in the media
402
- # playlist. In addition, the fragments with producer timestamps within
403
- # the `TimestampRange` ingested immediately following the first
404
- # fragment (up to the
738
+ # GetHLSStreamingSessionURLInput$PlaybackMode is `ON_DEMAND` or
739
+ # `LIVE_REPLAY`, the first fragment ingested with a producer timestamp
740
+ # within the specified FragmentSelector$TimestampRange is included in
741
+ # the media playlist. In addition, the fragments with producer
742
+ # timestamps within the `TimestampRange` ingested immediately
743
+ # following the first fragment (up to the
405
744
  # GetHLSStreamingSessionURLInput$MaxMediaPlaylistFragmentResults
406
745
  # value) are included.
407
746
  #
@@ -479,8 +818,10 @@ module Aws::KinesisVideoArchivedMedia
479
818
  # If `FragmentSelectorType` for the request is `SERVER_TIMESTAMP`,
480
819
  # this value must be in the past.
481
820
  #
482
- # If the `HLSTimestampRange` value is specified, the `EndTimestamp`
483
- # value is required.
821
+ # The `EndTimestamp` value is required for `ON_DEMAND` mode, but
822
+ # optional for `LIVE_REPLAY` mode. If the `EndTimestamp` is not set
823
+ # for `LIVE_REPLAY` mode then the session will continue to include
824
+ # newly ingested fragments until the session expires.
484
825
  #
485
826
  # <note markdown="1"> This value is inclusive. The `EndTimestamp` is compared to the
486
827
  # (starting) timestamp of the fragment. Fragments that start before
@@ -604,8 +945,8 @@ module Aws::KinesisVideoArchivedMedia
604
945
  include Aws::Structure
605
946
  end
606
947
 
607
- # A `PlaybackMode` of `ON_DEMAND` was requested for a stream that does
608
- # not retain data (that is, has a `DataRetentionInHours` of 0).
948
+ # A streaming session was requested for a stream that does not retain
949
+ # data (that is, has a `DataRetentionInHours` of 0).
609
950
  #
610
951
  # @!attribute [rw] message
611
952
  # @return [String]
@@ -633,11 +974,12 @@ module Aws::KinesisVideoArchivedMedia
633
974
  # `GetMedia` throws this error when Kinesis Video Streams can't find
634
975
  # the stream that you specified.
635
976
  #
636
- # `GetHLSStreamingSessionURL` throws this error if a session with a
637
- # `PlaybackMode` of `ON_DEMAND` is requested for a stream that has no
638
- # fragments within the requested time range, or if a session with a
639
- # `PlaybackMode` of `LIVE` is requested for a stream that has no
640
- # fragments within the last 30 seconds.
977
+ # `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw
978
+ # this error if a session with a `PlaybackMode` of `ON_DEMAND` or
979
+ # `LIVE_REPLAY`is requested for a stream that has no fragments within
980
+ # the requested time range, or if a session with a `PlaybackMode` of
981
+ # `LIVE` is requested for a stream that has no fragments within the last
982
+ # 30 seconds.
641
983
  #
642
984
  # @!attribute [rw] message
643
985
  # @return [String]
@@ -677,11 +1019,11 @@ module Aws::KinesisVideoArchivedMedia
677
1019
  include Aws::Structure
678
1020
  end
679
1021
 
680
- # The type of the media (for example, h.264 video or ACC audio) could
681
- # not be determined from the codec IDs of the tracks in the first
682
- # fragment for a playback session. The codec ID for track 1 should be
683
- # `V_MPEG/ISO/AVC` and, optionally, the codec ID for track 2 should be
684
- # `A_AAC`.
1022
+ # The type of the media (for example, h.264 or h.265 video or ACC or
1023
+ # G.711 audio) could not be determined from the codec IDs of the tracks
1024
+ # in the first fragment for a playback session. The codec ID for track 1
1025
+ # should be `V_MPEG/ISO/AVC` and, optionally, the codec ID for track 2
1026
+ # should be `A_AAC`.
685
1027
  #
686
1028
  # @!attribute [rw] message
687
1029
  # @return [String]
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.16.0
4
+ version: 1.17.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: 2019-07-01 00:00:00.000000000 Z
11
+ date: 2019-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core