aws-sdk-kinesisvideoarchivedmedia 1.16.0 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f983615a3b757d4ca06b404645a2ec26bdf62ba
4
- data.tar.gz: 177654450b09e52ca906c5e49a036878e602a0cc
3
+ metadata.gz: 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