aws-sdk-kinesisvideoarchivedmedia 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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