aws-sdk-kinesisvideoarchivedmedia 1.16.0 → 1.21.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: 51296e836336e18d14c687350a8f1af34e0329ee
4
+ data.tar.gz: 9bb0f67b8dbbc67ff7ba92e59e5c4fd2abe029a7
5
5
  SHA512:
6
- metadata.gz: bdd217b290c50f315a36ab0d169aeab8b244d75c6b3be5ccab99f78db8783ace9a44cd33396ec767915056ca176aaa65701e6570f9112e68782f1c416ae942ce
7
- data.tar.gz: 95226f28f0a504c521a48c75870a46b2eb1df898ed6a4c53133305d6592609d3dfdf9b8f6150ade079283bd85085d6ef321857569cd382fba908c5e2ef48b382
6
+ metadata.gz: fa8f27d4645bff4f529f5c28a9d5e66f35d07df60f34f5fde26436cdb22bf51b14605d4907ca8730c110d5464d54f051d2e49a4b4c5fe6500316383a28973e4c
7
+ data.tar.gz: fa178a348af5ca9dbbefd766099b75ce43af55de742141df47e3995227ca3b875ecc42719e951fc5b0e6174cfade2fedf6a8b5a32a8acc5b4227d0626d567637
@@ -24,17 +24,20 @@ require_relative 'aws-sdk-kinesisvideoarchivedmedia/customizations'
24
24
  # methods each accept a hash of request parameters and return a response
25
25
  # structure.
26
26
  #
27
+ # kinesis_video_archived_media = Aws::KinesisVideoArchivedMedia::Client.new
28
+ # resp = kinesis_video_archived_media.get_dash_streaming_session_url(params)
29
+ #
27
30
  # See {Client} for more information.
28
31
  #
29
32
  # # Errors
30
33
  #
31
- # Errors returned from Amazon Kinesis Video Streams Archived Media all
32
- # extend {Errors::ServiceError}.
34
+ # Errors returned from Amazon Kinesis Video Streams Archived Media are defined in the
35
+ # {Errors} module and all extend {Errors::ServiceError}.
33
36
  #
34
37
  # begin
35
38
  # # do stuff
36
39
  # rescue Aws::KinesisVideoArchivedMedia::Errors::ServiceError
37
- # # rescues all service API errors
40
+ # # rescues all Amazon Kinesis Video Streams Archived Media API errors
38
41
  # end
39
42
  #
40
43
  # See {Errors} for more information.
@@ -42,6 +45,6 @@ require_relative 'aws-sdk-kinesisvideoarchivedmedia/customizations'
42
45
  # @service
43
46
  module Aws::KinesisVideoArchivedMedia
44
47
 
45
- GEM_VERSION = '1.16.0'
48
+ GEM_VERSION = '1.21.0'
46
49
 
47
50
  end
@@ -30,6 +30,18 @@ require 'aws-sdk-core/plugins/protocols/rest_json.rb'
30
30
  Aws::Plugins::GlobalConfiguration.add_identifier(:kinesisvideoarchivedmedia)
31
31
 
32
32
  module Aws::KinesisVideoArchivedMedia
33
+ # An API client for KinesisVideoArchivedMedia. To construct a client, you need to configure a `:region` and `:credentials`.
34
+ #
35
+ # client = Aws::KinesisVideoArchivedMedia::Client.new(
36
+ # region: region_name,
37
+ # credentials: credentials,
38
+ # # ...
39
+ # )
40
+ #
41
+ # For details on configuring region and credentials see
42
+ # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html).
43
+ #
44
+ # See {#initialize} for a full list of supported configuration options.
33
45
  class Client < Seahorse::Client::Base
34
46
 
35
47
  include Aws::ClientStubs
@@ -108,6 +120,12 @@ module Aws::KinesisVideoArchivedMedia
108
120
  # When set to `true`, a thread polling for endpoints will be running in
109
121
  # the background every 60 secs (default). Defaults to `false`.
110
122
  #
123
+ # @option options [Boolean] :adaptive_retry_wait_to_fill (true)
124
+ # Used only in `adaptive` retry mode. When true, the request will sleep
125
+ # until there is sufficent client side capacity to retry the request.
126
+ # When false, the request will raise a `RetryCapacityNotAvailableError` and will
127
+ # not retry instead of sleeping.
128
+ #
111
129
  # @option options [Boolean] :client_side_monitoring (false)
112
130
  # When `true`, client-side metrics will be collected for all API requests from
113
131
  # this client.
@@ -132,6 +150,10 @@ module Aws::KinesisVideoArchivedMedia
132
150
  # When `true`, an attempt is made to coerce request parameters into
133
151
  # the required types.
134
152
  #
153
+ # @option options [Boolean] :correct_clock_skew (true)
154
+ # Used only in `standard` and adaptive retry modes. Specifies whether to apply
155
+ # a clock skew correction and retry requests with skewed client clocks.
156
+ #
135
157
  # @option options [Boolean] :disable_host_prefix_injection (false)
136
158
  # Set to true to disable SDK automatically adding host prefix
137
159
  # to default service endpoint when available.
@@ -166,15 +188,29 @@ module Aws::KinesisVideoArchivedMedia
166
188
  # The Logger instance to send log messages to. If this option
167
189
  # is not set, logging will be disabled.
168
190
  #
191
+ # @option options [Integer] :max_attempts (3)
192
+ # An integer representing the maximum number attempts that will be made for
193
+ # a single request, including the initial attempt. For example,
194
+ # setting this value to 5 will result in a request being retried up to
195
+ # 4 times. Used in `standard` and `adaptive` retry modes.
196
+ #
169
197
  # @option options [String] :profile ("default")
170
198
  # Used when loading credentials from the shared credentials file
171
199
  # at HOME/.aws/credentials. When not specified, 'default' is used.
172
200
  #
201
+ # @option options [Proc] :retry_backoff
202
+ # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
203
+ # This option is only used in the `legacy` retry mode.
204
+ #
173
205
  # @option options [Float] :retry_base_delay (0.3)
174
- # The base delay in seconds used by the default backoff function.
206
+ # The base delay in seconds used by the default backoff function. This option
207
+ # is only used in the `legacy` retry mode.
175
208
  #
176
209
  # @option options [Symbol] :retry_jitter (:none)
177
- # A delay randomiser function used by the default backoff function. Some predefined functions can be referenced by name - :none, :equal, :full, otherwise a Proc that takes and returns a number.
210
+ # A delay randomiser function used by the default backoff function.
211
+ # Some predefined functions can be referenced by name - :none, :equal, :full,
212
+ # otherwise a Proc that takes and returns a number. This option is only used
213
+ # in the `legacy` retry mode.
178
214
  #
179
215
  # @see https://www.awsarchitectureblog.com/2015/03/backoff.html
180
216
  #
@@ -182,11 +218,26 @@ module Aws::KinesisVideoArchivedMedia
182
218
  # The maximum number of times to retry failed requests. Only
183
219
  # ~ 500 level server errors and certain ~ 400 level client errors
184
220
  # are retried. Generally, these are throttling errors, data
185
- # checksum errors, networking errors, timeout errors and auth
186
- # errors from expired credentials.
221
+ # checksum errors, networking errors, timeout errors, auth errors,
222
+ # endpoint discovery, and errors from expired credentials.
223
+ # This option is only used in the `legacy` retry mode.
187
224
  #
188
225
  # @option options [Integer] :retry_max_delay (0)
189
- # The maximum number of seconds to delay between retries (0 for no limit) used by the default backoff function.
226
+ # The maximum number of seconds to delay between retries (0 for no limit)
227
+ # used by the default backoff function. This option is only used in the
228
+ # `legacy` retry mode.
229
+ #
230
+ # @option options [String] :retry_mode ("legacy")
231
+ # Specifies which retry algorithm to use. Values are:
232
+ # * `legacy` - The pre-existing retry behavior. This is default value if
233
+ # no retry mode is provided.
234
+ # * `standard` - A standardized set of retry rules across the AWS SDKs.
235
+ # This includes support for retry quotas, which limit the number of
236
+ # unsuccessful retries a client can make.
237
+ # * `adaptive` - An experimental retry mode that includes all the
238
+ # functionality of `standard` mode along with automatic client side
239
+ # throttling. This is a provisional mode that may change behavior
240
+ # in the future.
190
241
  #
191
242
  # @option options [String] :secret_access_key
192
243
  #
@@ -209,16 +260,16 @@ module Aws::KinesisVideoArchivedMedia
209
260
  # requests through. Formatted like 'http://proxy.com:123'.
210
261
  #
211
262
  # @option options [Float] :http_open_timeout (15) The number of
212
- # seconds to wait when opening a HTTP session before rasing a
263
+ # seconds to wait when opening a HTTP session before raising a
213
264
  # `Timeout::Error`.
214
265
  #
215
266
  # @option options [Integer] :http_read_timeout (60) The default
216
267
  # number of seconds to wait for response data. This value can
217
268
  # safely be set
218
- # per-request on the session yeidled by {#session_for}.
269
+ # per-request on the session yielded by {#session_for}.
219
270
  #
220
271
  # @option options [Float] :http_idle_timeout (5) The number of
221
- # seconds a connection is allowed to sit idble before it is
272
+ # seconds a connection is allowed to sit idle before it is
222
273
  # considered stale. Stale connections are closed and removed
223
274
  # from the pool before making a request.
224
275
  #
@@ -227,7 +278,7 @@ module Aws::KinesisVideoArchivedMedia
227
278
  # request body. This option has no effect unless the request has
228
279
  # "Expect" header set to "100-continue". Defaults to `nil` which
229
280
  # disables this behaviour. This value can safely be set per
230
- # request on the session yeidled by {#session_for}.
281
+ # request on the session yielded by {#session_for}.
231
282
  #
232
283
  # @option options [Boolean] :http_wire_trace (false) When `true`,
233
284
  # HTTP debug output will be sent to the `:logger`.
@@ -254,36 +305,385 @@ module Aws::KinesisVideoArchivedMedia
254
305
 
255
306
  # @!group API Operations
256
307
 
308
+ # Retrieves an MPEG Dynamic Adaptive Streaming over HTTP (DASH) URL for
309
+ # the stream. You can then open the URL in a media player to view the
310
+ # stream contents.
311
+ #
312
+ # Both the `StreamName` and the `StreamARN` parameters are optional, but
313
+ # you must specify either the `StreamName` or the `StreamARN` when
314
+ # invoking this API operation.
315
+ #
316
+ # An Amazon Kinesis video stream has the following requirements for
317
+ # providing data through MPEG-DASH:
318
+ #
319
+ # * The media must contain h.264 or h.265 encoded video and, optionally,
320
+ # AAC or G.711 encoded audio. Specifically, the codec ID of track 1
321
+ # should be `V_MPEG/ISO/AVC` (for h.264) or V\_MPEGH/ISO/HEVC (for
322
+ # H.265). Optionally, the codec ID of track 2 should be `A_AAC` (for
323
+ # AAC) or A\_MS/ACM (for G.711).
324
+ #
325
+ # * Data retention must be greater than 0.
326
+ #
327
+ # * The video track of each fragment must contain codec private data in
328
+ # the Advanced Video Coding (AVC) for H.264 format and HEVC for H.265
329
+ # format. For more information, see [MPEG-4 specification ISO/IEC
330
+ # 14496-15][1]. For information about adapting stream data to a given
331
+ # format, see [NAL Adaptation Flags][2].
332
+ #
333
+ # * The audio track (if present) of each fragment must contain codec
334
+ # private data in the AAC format ([AAC specification ISO/IEC
335
+ # 13818-7][3]) or the [MS Wave format][4].
336
+ #
337
+ # The following procedure shows how to use MPEG-DASH with Kinesis Video
338
+ # Streams:
339
+ #
340
+ # 1. Get an endpoint using [GetDataEndpoint][5], specifying
341
+ # `GET_DASH_STREAMING_SESSION_URL` for the `APIName` parameter.
342
+ #
343
+ # 2. Retrieve the MPEG-DASH URL using `GetDASHStreamingSessionURL`.
344
+ # Kinesis Video Streams creates an MPEG-DASH streaming session to be
345
+ # used for accessing content in a stream using the MPEG-DASH
346
+ # protocol. `GetDASHStreamingSessionURL` returns an authenticated
347
+ # URL (that includes an encrypted session token) for the session's
348
+ # MPEG-DASH *manifest* (the root resource needed for streaming with
349
+ # MPEG-DASH).
350
+ #
351
+ # <note markdown="1"> Don't share or store this token where an unauthorized entity
352
+ # could access it. The token provides access to the content of the
353
+ # stream. Safeguard the token with the same measures that you would
354
+ # use with your AWS credentials.
355
+ #
356
+ # </note>
357
+ #
358
+ # The media that is made available through the manifest consists
359
+ # only of the requested stream, time range, and format. No other
360
+ # media data (such as frames outside the requested window or
361
+ # alternate bitrates) is made available.
362
+ #
363
+ # 3. Provide the URL (containing the encrypted session token) for the
364
+ # MPEG-DASH manifest to a media player that supports the MPEG-DASH
365
+ # protocol. Kinesis Video Streams makes the initialization fragment
366
+ # and media fragments available through the manifest URL. The
367
+ # initialization fragment contains the codec private data for the
368
+ # stream, and other data needed to set up the video or audio decoder
369
+ # and renderer. The media fragments contain encoded video frames or
370
+ # encoded audio samples.
371
+ #
372
+ # 4. The media player receives the authenticated URL and requests
373
+ # stream metadata and media data normally. When the media player
374
+ # requests data, it calls the following actions:
375
+ #
376
+ # * **GetDASHManifest:** Retrieves an MPEG DASH manifest, which
377
+ # contains the metadata for the media that you want to playback.
378
+ #
379
+ # * **GetMP4InitFragment:** Retrieves the MP4 initialization
380
+ # fragment. The media player typically loads the initialization
381
+ # fragment before loading any media fragments. This fragment
382
+ # contains the "`fytp`" and "`moov`" MP4 atoms, and the child
383
+ # atoms that are needed to initialize the media player decoder.
384
+ #
385
+ # The initialization fragment does not correspond to a fragment in
386
+ # a Kinesis video stream. It contains only the codec private data
387
+ # for the stream and respective track, which the media player
388
+ # needs to decode the media frames.
389
+ #
390
+ # * **GetMP4MediaFragment:** Retrieves MP4 media fragments. These
391
+ # fragments contain the "`moof`" and "`mdat`" MP4 atoms and
392
+ # their child atoms, containing the encoded fragment's media
393
+ # frames and their timestamps.
394
+ #
395
+ # <note markdown="1"> After the first media fragment is made available in a streaming
396
+ # session, any fragments that don't contain the same codec
397
+ # private data cause an error to be returned when those different
398
+ # media fragments are loaded. Therefore, the codec private data
399
+ # should not change between fragments in a session. This also
400
+ # means that the session fails if the fragments in a stream change
401
+ # from having only video to having both audio and video.
402
+ #
403
+ # </note>
404
+ #
405
+ # Data retrieved with this action is billable. See [Pricing][6]
406
+ # for details.
407
+ #
408
+ # <note markdown="1"> The following restrictions apply to MPEG-DASH sessions:
409
+ #
410
+ # * A streaming session URL should not be shared between players. The
411
+ # service might throttle a session if multiple media players are
412
+ # sharing it. For connection limits, see [Kinesis Video Streams
413
+ # Limits][7].
414
+ #
415
+ # * A Kinesis video stream can have a maximum of ten active MPEG-DASH
416
+ # streaming sessions. If a new session is created when the maximum
417
+ # number of sessions is already active, the oldest (earliest created)
418
+ # session is closed. The number of active `GetMedia` connections on a
419
+ # Kinesis video stream does not count against this limit, and the
420
+ # number of active MPEG-DASH sessions does not count against the
421
+ # active `GetMedia` connection limit.
422
+ #
423
+ # <note markdown="1"> The maximum limits for active HLS and MPEG-DASH streaming sessions
424
+ # are independent of each other.
425
+ #
426
+ # </note>
427
+ #
428
+ # </note>
429
+ #
430
+ # You can monitor the amount of data that the media player consumes by
431
+ # monitoring the `GetMP4MediaFragment.OutgoingBytes` Amazon CloudWatch
432
+ # metric. For information about using CloudWatch to monitor Kinesis
433
+ # Video Streams, see [Monitoring Kinesis Video Streams][8]. For pricing
434
+ # information, see [Amazon Kinesis Video Streams Pricing][6] and [AWS
435
+ # Pricing][9]. Charges for both HLS sessions and outgoing AWS data
436
+ # apply.
437
+ #
438
+ # For more information about HLS, see [HTTP Live Streaming][10] on the
439
+ # [Apple Developer site][11].
440
+ #
441
+ # If an error is thrown after invoking a Kinesis Video Streams archived
442
+ # media API, in addition to the HTTP status code and the response body,
443
+ # it includes the following pieces of information:
444
+ #
445
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
446
+ # in addition to what the HTTP status code provides.
447
+ #
448
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
449
+ # AWS, the support team can better diagnose the problem if given the
450
+ # Request Id.
451
+ #
452
+ # Both the HTTP status code and the ErrorType header can be utilized to
453
+ # make programmatic decisions about whether errors are retry-able and
454
+ # under what conditions, as well as provide information on what actions
455
+ # the client programmer might need to take in order to successfully try
456
+ # again.
457
+ #
458
+ # For more information, see the **Errors** section at the bottom of
459
+ # this
460
+ # topic, as well as [Common Errors][12].
461
+ #
462
+ #
463
+ #
464
+ # [1]: https://www.iso.org/standard/55980.html
465
+ # [2]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html
466
+ # [3]: https://www.iso.org/standard/43345.html
467
+ # [4]: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
468
+ # [5]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html
469
+ # [6]: https://aws.amazon.com/kinesis/video-streams/pricing/
470
+ # [7]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html
471
+ # [8]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html
472
+ # [9]: https://aws.amazon.com/pricing/
473
+ # [10]: https://developer.apple.com/streaming/
474
+ # [11]: https://developer.apple.com
475
+ # [12]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
476
+ #
477
+ # @option params [String] :stream_name
478
+ # The name of the stream for which to retrieve the MPEG-DASH manifest
479
+ # URL.
480
+ #
481
+ # You must specify either the `StreamName` or the `StreamARN`.
482
+ #
483
+ # @option params [String] :stream_arn
484
+ # The Amazon Resource Name (ARN) of the stream for which to retrieve the
485
+ # MPEG-DASH manifest URL.
486
+ #
487
+ # You must specify either the `StreamName` or the `StreamARN`.
488
+ #
489
+ # @option params [String] :playback_mode
490
+ # Whether to retrieve live, live replay, or archived, on-demand data.
491
+ #
492
+ # Features of the three types of sessions include the following:
493
+ #
494
+ # * <b> <code>LIVE</code> </b>\: For sessions of this type, the
495
+ # MPEG-DASH manifest is continually updated with the latest fragments
496
+ # as they become available. We recommend that the media player
497
+ # retrieve a new manifest on a one-second interval. When this type of
498
+ # session is played in a media player, the user interface typically
499
+ # displays a "live" notification, with no scrubber control for
500
+ # choosing the position in the playback window to display.
501
+ #
502
+ # <note markdown="1"> In `LIVE` mode, the newest available fragments are included in an
503
+ # MPEG-DASH manifest, even if there is a gap between fragments (that
504
+ # is, if a fragment is missing). A gap like this might cause a media
505
+ # player to halt or cause a jump in playback. In this mode, fragments
506
+ # are not added to the MPEG-DASH manifest if they are older than the
507
+ # newest fragment in the playlist. If the missing fragment becomes
508
+ # available after a subsequent fragment is added to the manifest, the
509
+ # older fragment is not added, and the gap is not filled.
510
+ #
511
+ # </note>
512
+ #
513
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
514
+ # MPEG-DASH manifest is updated similarly to how it is updated for
515
+ # `LIVE` mode except that it starts by including fragments from a
516
+ # given start time. Instead of fragments being added as they are
517
+ # ingested, fragments are added as the duration of the next fragment
518
+ # elapses. For example, if the fragments in the session are two
519
+ # seconds long, then a new fragment is added to the manifest every two
520
+ # seconds. This mode is useful to be able to start playback from when
521
+ # an event is detected and continue live streaming media that has not
522
+ # yet been ingested as of the time of the session creation. This mode
523
+ # is also useful to stream previously archived media without being
524
+ # limited by the 1,000 fragment limit in the `ON_DEMAND` mode.
525
+ #
526
+ # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the
527
+ # MPEG-DASH manifest contains all the fragments for the session, up to
528
+ # the number that is specified in `MaxMediaPlaylistFragmentResults`.
529
+ # The manifest must be retrieved only once for each session. When this
530
+ # type of session is played in a media player, the user interface
531
+ # typically displays a scrubber control for choosing the position in
532
+ # the playback window to display.
533
+ #
534
+ # In all playback modes, if `FragmentSelectorType` is
535
+ # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
536
+ # same start timestamp, the fragment that has the larger fragment number
537
+ # (that is, the newer fragment) is included in the MPEG-DASH manifest.
538
+ # The other fragments are not included. Fragments that have different
539
+ # timestamps but have overlapping durations are still included in the
540
+ # MPEG-DASH manifest. This can lead to unexpected behavior in the media
541
+ # player.
542
+ #
543
+ # The default is `LIVE`.
544
+ #
545
+ # @option params [String] :display_fragment_timestamp
546
+ # Per the MPEG-DASH specification, the wall-clock time of fragments in
547
+ # the manifest file can be derived using attributes in the manifest
548
+ # itself. However, typically, MPEG-DASH compatible media players do not
549
+ # properly handle gaps in the media timeline. Kinesis Video Streams
550
+ # adjusts the media timeline in the manifest file to enable playback of
551
+ # media with discontinuities. Therefore, the wall-clock time derived
552
+ # from the manifest file may be inaccurate. If DisplayFragmentTimestamp
553
+ # is set to `ALWAYS`, the accurate fragment timestamp is added to each S
554
+ # element in the manifest file with the attribute name “kvs:ts”. A
555
+ # custom MPEG-DASH media player is necessary to leverage this custom
556
+ # attribute.
557
+ #
558
+ # The default value is `NEVER`. When DASHFragmentSelector is
559
+ # `SERVER_TIMESTAMP`, the timestamps will be the server start
560
+ # timestamps. Similarly, when DASHFragmentSelector is
561
+ # `PRODUCER_TIMESTAMP`, the timestamps will be the producer start
562
+ # timestamps.
563
+ #
564
+ # @option params [String] :display_fragment_number
565
+ # Fragments are identified in the manifest file based on their sequence
566
+ # number in the session. If DisplayFragmentNumber is set to `ALWAYS`,
567
+ # the Kinesis Video Streams fragment number is added to each S element
568
+ # in the manifest file with the attribute name “kvs:fn”. These fragment
569
+ # numbers can be used for logging or for use with other APIs (e.g.
570
+ # `GetMedia` and `GetMediaForFragmentList`). A custom MPEG-DASH media
571
+ # player is necessary to leverage these this custom attribute.
572
+ #
573
+ # The default value is `NEVER`.
574
+ #
575
+ # @option params [Types::DASHFragmentSelector] :dash_fragment_selector
576
+ # The time range of the requested fragment and the source of the
577
+ # timestamps.
578
+ #
579
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
580
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE. If
581
+ # PlaybackMode is LIVE, the FragmentSelectorType can be set, but the
582
+ # TimestampRange should not be set. If PlaybackMode is ON_DEMAND or
583
+ # LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
584
+ # set.</p>
585
+ # `
586
+ #
587
+ # @option params [Integer] :expires
588
+ # The time in seconds until the requested session expires. This value
589
+ # can be between 300 (5 minutes) and 43200 (12 hours).
590
+ #
591
+ # When a session expires, no new calls to `GetDashManifest`,
592
+ # `GetMP4InitFragment`, or `GetMP4MediaFragment` can be made for that
593
+ # session.
594
+ #
595
+ # The default is 300 (5 minutes).
596
+ #
597
+ # @option params [Integer] :max_manifest_fragment_results
598
+ # The maximum number of fragments that are returned in the MPEG-DASH
599
+ # manifest.
600
+ #
601
+ # When the `PlaybackMode` is `LIVE`, the most recent fragments are
602
+ # returned up to this value. When the `PlaybackMode` is `ON_DEMAND`, the
603
+ # oldest fragments are returned, up to this maximum number.
604
+ #
605
+ # When there are a higher number of fragments available in a live
606
+ # MPEG-DASH manifest, video players often buffer content before starting
607
+ # playback. Increasing the buffer size increases the playback latency,
608
+ # but it decreases the likelihood that rebuffering will occur during
609
+ # playback. We recommend that a live MPEG-DASH manifest have a minimum
610
+ # of 3 fragments and a maximum of 10 fragments.
611
+ #
612
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
613
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
614
+ #
615
+ # The maximum value of 1,000 fragments corresponds to more than 16
616
+ # minutes of video on streams with 1-second fragments, and more than 2
617
+ # 1/2 hours of video on streams with 10-second fragments.
618
+ #
619
+ # @return [Types::GetDASHStreamingSessionURLOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
620
+ #
621
+ # * {Types::GetDASHStreamingSessionURLOutput#dash_streaming_session_url #dash_streaming_session_url} => String
622
+ #
623
+ # @example Request syntax with placeholder values
624
+ #
625
+ # resp = client.get_dash_streaming_session_url({
626
+ # stream_name: "StreamName",
627
+ # stream_arn: "ResourceARN",
628
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
629
+ # display_fragment_timestamp: "ALWAYS", # accepts ALWAYS, NEVER
630
+ # display_fragment_number: "ALWAYS", # accepts ALWAYS, NEVER
631
+ # dash_fragment_selector: {
632
+ # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
633
+ # timestamp_range: {
634
+ # start_timestamp: Time.now,
635
+ # end_timestamp: Time.now,
636
+ # },
637
+ # },
638
+ # expires: 1,
639
+ # max_manifest_fragment_results: 1,
640
+ # })
641
+ #
642
+ # @example Response structure
643
+ #
644
+ # resp.dash_streaming_session_url #=> String
645
+ #
646
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetDASHStreamingSessionURL AWS API Documentation
647
+ #
648
+ # @overload get_dash_streaming_session_url(params = {})
649
+ # @param [Hash] params ({})
650
+ def get_dash_streaming_session_url(params = {}, options = {})
651
+ req = build_request(:get_dash_streaming_session_url, params)
652
+ req.send_request(options)
653
+ end
654
+
257
655
  # Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can
258
656
  # then open the URL in a browser or media player to view the stream
259
657
  # contents.
260
658
  #
261
- # You must specify either the `StreamName` or the `StreamARN`.
659
+ # Both the `StreamName` and the `StreamARN` parameters are optional, but
660
+ # you must specify either the `StreamName` or the `StreamARN` when
661
+ # invoking this API operation.
262
662
  #
263
663
  # An Amazon Kinesis video stream has the following requirements for
264
664
  # providing data through HLS:
265
665
  #
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`.
666
+ # * The media must contain h.264 or h.265 encoded video and, optionally,
667
+ # AAC encoded audio. Specifically, the codec ID of track 1 should be
668
+ # `V_MPEG/ISO/AVC` (for h.264) or `V_MPEG/ISO/HEVC` (for h.265).
669
+ # Optionally, the codec ID of track 2 should be `A_AAC`.
270
670
  #
271
671
  # * Data retention must be greater than 0.
272
672
  #
273
673
  # * 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].
674
+ # the Advanced Video Coding (AVC) for H.264 format or HEVC for H.265
675
+ # format ([MPEG-4 specification ISO/IEC 14496-15][1]). For information
676
+ # about adapting stream data to a given format, see [NAL Adaptation
677
+ # Flags][2].
277
678
  #
278
679
  # * The audio track (if present) of each fragment must contain codec
279
680
  # private data in the AAC format ([AAC specification ISO/IEC
280
681
  # 13818-7][3]).
281
682
  #
282
683
  # 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].
684
+ # MPEG-4 form (also called fMP4 or CMAF) or the MPEG-2 form (also called
685
+ # TS chunks, which the HLS specification also supports). For more
686
+ # information about HLS fragment types, see the [HLS specification][4].
287
687
  #
288
688
  # The following procedure shows how to use HLS with Kinesis Video
289
689
  # Streams:
@@ -390,7 +790,7 @@ module Aws::KinesisVideoArchivedMedia
390
790
  # sharing it. For connection limits, see [Kinesis Video Streams
391
791
  # Limits][7].
392
792
  #
393
- # * A Kinesis video stream can have a maximum of five active HLS
793
+ # * A Kinesis video stream can have a maximum of ten active HLS
394
794
  # streaming sessions. If a new session is created when the maximum
395
795
  # number of sessions is already active, the oldest (earliest created)
396
796
  # session is closed. The number of active `GetMedia` connections on a
@@ -398,6 +798,11 @@ module Aws::KinesisVideoArchivedMedia
398
798
  # number of active HLS sessions does not count against the active
399
799
  # `GetMedia` connection limit.
400
800
  #
801
+ # <note markdown="1"> The maximum limits for active HLS and MPEG-DASH streaming sessions
802
+ # are independent of each other.
803
+ #
804
+ # </note>
805
+ #
401
806
  # </note>
402
807
  #
403
808
  # You can monitor the amount of data that the media player consumes by
@@ -411,6 +816,27 @@ module Aws::KinesisVideoArchivedMedia
411
816
  # For more information about HLS, see [HTTP Live Streaming][10] on the
412
817
  # [Apple Developer site][11].
413
818
  #
819
+ # If an error is thrown after invoking a Kinesis Video Streams archived
820
+ # media API, in addition to the HTTP status code and the response body,
821
+ # it includes the following pieces of information:
822
+ #
823
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
824
+ # in addition to what the HTTP status code provides.
825
+ #
826
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
827
+ # AWS, the support team can better diagnose the problem if given the
828
+ # Request Id.
829
+ #
830
+ # Both the HTTP status code and the ErrorType header can be utilized to
831
+ # make programmatic decisions about whether errors are retry-able and
832
+ # under what conditions, as well as provide information on what actions
833
+ # the client programmer might need to take in order to successfully try
834
+ # again.
835
+ #
836
+ # For more information, see the **Errors** section at the bottom of
837
+ # this
838
+ # topic, as well as [Common Errors][12].
839
+ #
414
840
  #
415
841
  #
416
842
  # [1]: https://www.iso.org/standard/55980.html
@@ -424,6 +850,7 @@ module Aws::KinesisVideoArchivedMedia
424
850
  # [9]: https://aws.amazon.com/pricing/
425
851
  # [10]: https://developer.apple.com/streaming/
426
852
  # [11]: https://developer.apple.com
853
+ # [12]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
427
854
  #
428
855
  # @option params [String] :stream_name
429
856
  # The name of the stream for which to retrieve the HLS master playlist
@@ -438,9 +865,9 @@ module Aws::KinesisVideoArchivedMedia
438
865
  # You must specify either the `StreamName` or the `StreamARN`.
439
866
  #
440
867
  # @option params [String] :playback_mode
441
- # Whether to retrieve live or archived, on-demand data.
868
+ # Whether to retrieve live, live replay, or archived, on-demand data.
442
869
  #
443
- # Features of the two types of session include the following:
870
+ # Features of the three types of sessions include the following:
444
871
  #
445
872
  # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
446
873
  # media playlist is continually updated with the latest fragments as
@@ -461,6 +888,20 @@ module Aws::KinesisVideoArchivedMedia
461
888
  #
462
889
  # </note>
463
890
  #
891
+ # * <b> <code>LIVE_REPLAY</code> </b>\: For sessions of this type, the
892
+ # HLS media playlist is updated similarly to how it is updated for
893
+ # `LIVE` mode except that it starts by including fragments from a
894
+ # given start time. Instead of fragments being added as they are
895
+ # ingested, fragments are added as the duration of the next fragment
896
+ # elapses. For example, if the fragments in the session are two
897
+ # seconds long, then a new fragment is added to the media playlist
898
+ # every two seconds. This mode is useful to be able to start playback
899
+ # from when an event is detected and continue live streaming media
900
+ # that has not yet been ingested as of the time of the session
901
+ # creation. This mode is also useful to stream previously archived
902
+ # media without being limited by the 1,000 fragment limit in the
903
+ # `ON_DEMAND` mode.
904
+ #
464
905
  # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the HLS
465
906
  # media playlist contains all the fragments for the session, up to the
466
907
  # number that is specified in `MaxMediaPlaylistFragmentResults`. The
@@ -469,7 +910,7 @@ module Aws::KinesisVideoArchivedMedia
469
910
  # typically displays a scrubber control for choosing the position in
470
911
  # the playback window to display.
471
912
  #
472
- # In both playback modes, if `FragmentSelectorType` is
913
+ # In all playback modes, if `FragmentSelectorType` is
473
914
  # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
474
915
  # same start timestamp, the fragment that has the larger fragment number
475
916
  # (that is, the newer fragment) is included in the HLS media playlist.
@@ -481,14 +922,16 @@ module Aws::KinesisVideoArchivedMedia
481
922
  # The default is `LIVE`.
482
923
  #
483
924
  # @option params [Types::HLSFragmentSelector] :hls_fragment_selector
484
- # The time range of the requested fragment, and the source of the
925
+ # The time range of the requested fragment and the source of the
485
926
  # timestamps.
486
927
  #
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.
928
+ # This parameter is required if `PlaybackMode` is `ON_DEMAND` or
929
+ # `LIVE_REPLAY`. This parameter is optional if PlaybackMode is` LIVE. If
930
+ # PlaybackMode is LIVE, the FragmentSelectorType can be set, but the
931
+ # TimestampRange should not be set. If PlaybackMode is ON_DEMAND or
932
+ # LIVE_REPLAY, both FragmentSelectorType and TimestampRange must be
933
+ # set.</p>
934
+ # `
492
935
  #
493
936
  # @option params [String] :container_format
494
937
  # Specifies which format should be used for packaging the media.
@@ -504,23 +947,40 @@ module Aws::KinesisVideoArchivedMedia
504
947
  # The default is `FRAGMENTED_MP4`.
505
948
  #
506
949
  # @option params [String] :discontinuity_mode
507
- # Specifies when flags marking discontinuities between fragments will be
508
- # added to the media playlists. The default is `ALWAYS` when
509
- # HLSFragmentSelector is `SERVER_TIMESTAMP`, and `NEVER` when it is
510
- # `PRODUCER_TIMESTAMP`.
950
+ # Specifies when flags marking discontinuities between fragments are
951
+ # added to the media playlists.
511
952
  #
512
953
  # Media players typically build a timeline of media content to play,
513
954
  # based on the timestamps of each fragment. This means that if there is
514
- # any overlap between fragments (as is typical if HLSFragmentSelector is
515
- # `SERVER_TIMESTAMP`), the media player timeline has small gaps between
516
- # fragments in some places, and overwrites frames in other places. When
517
- # there are discontinuity flags between fragments, the media player is
518
- # expected to reset the timeline, resulting in the fragment being played
519
- # immediately after the previous fragment. We recommend that you always
520
- # have discontinuity flags between fragments if the fragment timestamps
521
- # are not accurate or if fragments might be missing. You should not
522
- # place discontinuity flags between fragments for the player timeline to
523
- # accurately map to the producer timestamps.
955
+ # any overlap or gap between fragments (as is typical if
956
+ # HLSFragmentSelector is set to `SERVER_TIMESTAMP`), the media player
957
+ # timeline will also have small gaps between fragments in some places,
958
+ # and will overwrite frames in other places. Gaps in the media player
959
+ # timeline can cause playback to stall and overlaps can cause playback
960
+ # to be jittery. When there are discontinuity flags between fragments,
961
+ # the media player is expected to reset the timeline, resulting in the
962
+ # next fragment being played immediately after the previous fragment.
963
+ #
964
+ # The following modes are supported:
965
+ #
966
+ # * `ALWAYS`\: a discontinuity marker is placed between every fragment
967
+ # in the HLS media playlist. It is recommended to use a value of
968
+ # `ALWAYS` if the fragment timestamps are not accurate.
969
+ #
970
+ # * `NEVER`\: no discontinuity markers are placed anywhere. It is
971
+ # recommended to use a value of `NEVER` to ensure the media player
972
+ # timeline most accurately maps to the producer timestamps.
973
+ #
974
+ # * `ON_DISCONTIUNITY`\: a discontinuity marker is placed between
975
+ # fragments that have a gap or overlap of more than 50 milliseconds.
976
+ # For most playback scenarios, it is recommended to use a value of
977
+ # `ON_DISCONTINUITY` so that the media player timeline is only reset
978
+ # when there is a significant issue with the media timeline (e.g. a
979
+ # missing fragment).
980
+ #
981
+ # The default is `ALWAYS` when HLSFragmentSelector is set to
982
+ # `SERVER_TIMESTAMP`, and `NEVER` when it is set to
983
+ # `PRODUCER_TIMESTAMP`.
524
984
  #
525
985
  # @option params [String] :display_fragment_timestamp
526
986
  # Specifies when the fragment start timestamps should be included in the
@@ -543,8 +1003,8 @@ module Aws::KinesisVideoArchivedMedia
543
1003
  # can be between 300 (5 minutes) and 43200 (12 hours).
544
1004
  #
545
1005
  # When a session expires, no new calls to `GetHLSMasterPlaylist`,
546
- # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or `GetMP4MediaFragment`
547
- # can be made for that session.
1006
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, `GetMP4MediaFragment`, or
1007
+ # `GetTSFragment` can be made for that session.
548
1008
  #
549
1009
  # The default is 300 (5 minutes).
550
1010
  #
@@ -563,8 +1023,8 @@ module Aws::KinesisVideoArchivedMedia
563
1023
  # playback. We recommend that a live HLS media playlist have a minimum
564
1024
  # of 3 fragments and a maximum of 10 fragments.
565
1025
  #
566
- # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
567
- # `PlaybackMode` is `ON_DEMAND`.
1026
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
1027
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
568
1028
  #
569
1029
  # The maximum value of 1,000 fragments corresponds to more than 16
570
1030
  # minutes of video on streams with 1-second fragments, and more than 2
@@ -579,7 +1039,7 @@ module Aws::KinesisVideoArchivedMedia
579
1039
  # resp = client.get_hls_streaming_session_url({
580
1040
  # stream_name: "StreamName",
581
1041
  # stream_arn: "ResourceARN",
582
- # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
1042
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
583
1043
  # hls_fragment_selector: {
584
1044
  # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
585
1045
  # timestamp_range: {
@@ -588,7 +1048,7 @@ module Aws::KinesisVideoArchivedMedia
588
1048
  # },
589
1049
  # },
590
1050
  # container_format: "FRAGMENTED_MP4", # accepts FRAGMENTED_MP4, MPEG_TS
591
- # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER
1051
+ # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER, ON_DISCONTINUITY
592
1052
  # display_fragment_timestamp: "ALWAYS", # accepts ALWAYS, NEVER
593
1053
  # expires: 1,
594
1054
  # max_media_playlist_fragment_results: 1,
@@ -626,9 +1086,31 @@ module Aws::KinesisVideoArchivedMedia
626
1086
  # megabytes per second (or 200 megabits per second) during a
627
1087
  # `GetMediaForFragmentList` session.
628
1088
  #
1089
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1090
+ # media API, in addition to the HTTP status code and the response body,
1091
+ # it includes the following pieces of information:
1092
+ #
1093
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1094
+ # in addition to what the HTTP status code provides.
1095
+ #
1096
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1097
+ # AWS, the support team can better diagnose the problem if given the
1098
+ # Request Id.
1099
+ #
1100
+ # Both the HTTP status code and the ErrorType header can be utilized to
1101
+ # make programmatic decisions about whether errors are retry-able and
1102
+ # under what conditions, as well as provide information on what actions
1103
+ # the client programmer might need to take in order to successfully try
1104
+ # again.
1105
+ #
1106
+ # For more information, see the **Errors** section at the bottom of
1107
+ # this
1108
+ # topic, as well as [Common Errors][2].
1109
+ #
629
1110
  #
630
1111
  #
631
1112
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1113
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
632
1114
  #
633
1115
  # @option params [required, String] :stream_name
634
1116
  # The name of the stream from which to retrieve fragment media.
@@ -678,9 +1160,31 @@ module Aws::KinesisVideoArchivedMedia
678
1160
  #
679
1161
  # </note>
680
1162
  #
1163
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1164
+ # media API, in addition to the HTTP status code and the response body,
1165
+ # it includes the following pieces of information:
1166
+ #
1167
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1168
+ # in addition to what the HTTP status code provides.
1169
+ #
1170
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1171
+ # AWS, the support team can better diagnose the problem if given the
1172
+ # Request Id.
1173
+ #
1174
+ # Both the HTTP status code and the ErrorType header can be utilized to
1175
+ # make programmatic decisions about whether errors are retry-able and
1176
+ # under what conditions, as well as provide information on what actions
1177
+ # the client programmer might need to take in order to successfully try
1178
+ # again.
1179
+ #
1180
+ # For more information, see the **Errors** section at the bottom of
1181
+ # this
1182
+ # topic, as well as [Common Errors][2].
1183
+ #
681
1184
  #
682
1185
  #
683
1186
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1187
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
684
1188
  #
685
1189
  # @option params [required, String] :stream_name
686
1190
  # The name of the stream from which to retrieve a fragment list.
@@ -751,7 +1255,7 @@ module Aws::KinesisVideoArchivedMedia
751
1255
  params: params,
752
1256
  config: config)
753
1257
  context[:gem_name] = 'aws-sdk-kinesisvideoarchivedmedia'
754
- context[:gem_version] = '1.16.0'
1258
+ context[:gem_version] = '1.21.0'
755
1259
  Seahorse::Client::Request.new(handlers, context)
756
1260
  end
757
1261