aws-sdk-kinesisvideoarchivedmedia 1.14.0 → 1.19.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: 5d1fb4dcd8eba2145412823f223ae86bcdd40516
4
- data.tar.gz: 96c7071dbf91419d48367c2351c9fc7a1e51fe00
3
+ metadata.gz: 2c63f8222ba081bf804fcf84b7d3ec9c9cda98a9
4
+ data.tar.gz: b6041842d2005028573c9d1e78609fcd604ba80d
5
5
  SHA512:
6
- metadata.gz: 3b41161765d8becc45a9adfa4ce7326060bce5695aae79dc3534766cbaec763dad925798c58f5de48eeb5e4b16bbf14a5be3ec63910df48fbaa9172caece7711
7
- data.tar.gz: a0b935d0a89bef7a7cf741c3bb059bd056497257ce9792bf134dee0b1273a98420daf6acce280ae130b20a8d2b90b1e915aec10e2408585005d5a2b04c9837c5
6
+ metadata.gz: cfffcf4f8beafff1a36a07d6e6ddb428bea95508e6bb7175674d274e9ab3cf9072f44a94b8c99b21a72f3d0f2328c756b111939eb3f7fb7ad8f40dd38e70cab6
7
+ data.tar.gz: 1beac9db327d3cf993bfba4d66645b69c4e0534b393aed67589cbda55f3a3def6c00830dee2b6342c2e7ba25e3509276c897d84fceb4757d092a5d4c93a9a419
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-kinesisvideoarchivedmedia/customizations'
42
42
  # @service
43
43
  module Aws::KinesisVideoArchivedMedia
44
44
 
45
- GEM_VERSION = '1.14.0'
45
+ GEM_VERSION = '1.19.0'
46
46
 
47
47
  end
@@ -116,6 +116,10 @@ module Aws::KinesisVideoArchivedMedia
116
116
  # Allows you to provide an identifier for this client which will be attached to
117
117
  # all generated client side metrics. Defaults to an empty string.
118
118
  #
119
+ # @option options [String] :client_side_monitoring_host ("127.0.0.1")
120
+ # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
121
+ # side monitoring agent is running on, where client metrics will be published via UDP.
122
+ #
119
123
  # @option options [Integer] :client_side_monitoring_port (31000)
120
124
  # Required for publishing client metrics. The port that the client side monitoring
121
125
  # agent is running on, where client metrics will be published via UDP.
@@ -250,36 +254,385 @@ module Aws::KinesisVideoArchivedMedia
250
254
 
251
255
  # @!group API Operations
252
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
+
253
604
  # Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can
254
605
  # then open the URL in a browser or media player to view the stream
255
606
  # contents.
256
607
  #
257
- # 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.
258
611
  #
259
612
  # An Amazon Kinesis video stream has the following requirements for
260
613
  # providing data through HLS:
261
614
  #
262
- # * The media must contain h.264 encoded video and, optionally, AAC
263
- # encoded audio. Specifically, the codec id of track 1 should be
264
- # `V_MPEG/ISO/AVC`. Optionally, the codec id of track 2 should be
265
- # `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`.
266
619
  #
267
620
  # * Data retention must be greater than 0.
268
621
  #
269
622
  # * The video track of each fragment must contain codec private data in
270
- # the Advanced Video Coding (AVC) for H.264 format ([MPEG-4
271
- # specification ISO/IEC 14496-15][1]). For information about adapting
272
- # 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].
273
627
  #
274
628
  # * The audio track (if present) of each fragment must contain codec
275
629
  # private data in the AAC format ([AAC specification ISO/IEC
276
630
  # 13818-7][3]).
277
631
  #
278
632
  # Kinesis Video Streams HLS sessions contain fragments in the fragmented
279
- # MPEG-4 form (also called fMP4 or CMAF), rather than the MPEG-2 form
280
- # (also called TS chunks, which the HLS specification also supports).
281
- # For more information about HLS fragment types, see the [HLS
282
- # 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].
283
636
  #
284
637
  # The following procedure shows how to use HLS with Kinesis Video
285
638
  # Streams:
@@ -386,7 +739,7 @@ module Aws::KinesisVideoArchivedMedia
386
739
  # sharing it. For connection limits, see [Kinesis Video Streams
387
740
  # Limits][7].
388
741
  #
389
- # * 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
390
743
  # streaming sessions. If a new session is created when the maximum
391
744
  # number of sessions is already active, the oldest (earliest created)
392
745
  # session is closed. The number of active `GetMedia` connections on a
@@ -394,6 +747,11 @@ module Aws::KinesisVideoArchivedMedia
394
747
  # number of active HLS sessions does not count against the active
395
748
  # `GetMedia` connection limit.
396
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
+ #
397
755
  # </note>
398
756
  #
399
757
  # You can monitor the amount of data that the media player consumes by
@@ -407,6 +765,27 @@ module Aws::KinesisVideoArchivedMedia
407
765
  # For more information about HLS, see [HTTP Live Streaming][10] on the
408
766
  # [Apple Developer site][11].
409
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
+ #
410
789
  #
411
790
  #
412
791
  # [1]: https://www.iso.org/standard/55980.html
@@ -420,6 +799,7 @@ module Aws::KinesisVideoArchivedMedia
420
799
  # [9]: https://aws.amazon.com/pricing/
421
800
  # [10]: https://developer.apple.com/streaming/
422
801
  # [11]: https://developer.apple.com
802
+ # [12]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
423
803
  #
424
804
  # @option params [String] :stream_name
425
805
  # The name of the stream for which to retrieve the HLS master playlist
@@ -434,9 +814,9 @@ module Aws::KinesisVideoArchivedMedia
434
814
  # You must specify either the `StreamName` or the `StreamARN`.
435
815
  #
436
816
  # @option params [String] :playback_mode
437
- # Whether to retrieve live or archived, on-demand data.
817
+ # Whether to retrieve live, live replay, or archived, on-demand data.
438
818
  #
439
- # Features of the two types of session include the following:
819
+ # Features of the three types of sessions include the following:
440
820
  #
441
821
  # * <b> <code>LIVE</code> </b>\: For sessions of this type, the HLS
442
822
  # media playlist is continually updated with the latest fragments as
@@ -457,6 +837,20 @@ module Aws::KinesisVideoArchivedMedia
457
837
  #
458
838
  # </note>
459
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
+ #
460
854
  # * <b> <code>ON_DEMAND</code> </b>\: For sessions of this type, the HLS
461
855
  # media playlist contains all the fragments for the session, up to the
462
856
  # number that is specified in `MaxMediaPlaylistFragmentResults`. The
@@ -465,7 +859,7 @@ module Aws::KinesisVideoArchivedMedia
465
859
  # typically displays a scrubber control for choosing the position in
466
860
  # the playback window to display.
467
861
  #
468
- # In both playback modes, if `FragmentSelectorType` is
862
+ # In all playback modes, if `FragmentSelectorType` is
469
863
  # `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
470
864
  # same start timestamp, the fragment that has the larger fragment number
471
865
  # (that is, the newer fragment) is included in the HLS media playlist.
@@ -477,14 +871,16 @@ module Aws::KinesisVideoArchivedMedia
477
871
  # The default is `LIVE`.
478
872
  #
479
873
  # @option params [Types::HLSFragmentSelector] :hls_fragment_selector
480
- # The time range of the requested fragment, and the source of the
874
+ # The time range of the requested fragment and the source of the
481
875
  # timestamps.
482
876
  #
483
- # This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
484
- # parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
485
- # is `LIVE`, the `FragmentSelectorType` can be set, but the
486
- # `TimestampRange` should not be set. If `PlaybackMode` is `ON_DEMAND`,
487
- # 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
+ # `
488
884
  #
489
885
  # @option params [String] :container_format
490
886
  # Specifies which format should be used for packaging the media.
@@ -500,23 +896,40 @@ module Aws::KinesisVideoArchivedMedia
500
896
  # The default is `FRAGMENTED_MP4`.
501
897
  #
502
898
  # @option params [String] :discontinuity_mode
503
- # Specifies when flags marking discontinuities between fragments will be
504
- # added to the media playlists. The default is `ALWAYS` when
505
- # HLSFragmentSelector is `SERVER_TIMESTAMP`, and `NEVER` when it is
506
- # `PRODUCER_TIMESTAMP`.
899
+ # Specifies when flags marking discontinuities between fragments are
900
+ # added to the media playlists.
507
901
  #
508
902
  # Media players typically build a timeline of media content to play,
509
903
  # based on the timestamps of each fragment. This means that if there is
510
- # any overlap between fragments (as is typical if HLSFragmentSelector is
511
- # `SERVER_TIMESTAMP`), the media player timeline has small gaps between
512
- # fragments in some places, and overwrites frames in other places. When
513
- # there are discontinuity flags between fragments, the media player is
514
- # expected to reset the timeline, resulting in the fragment being played
515
- # immediately after the previous fragment. We recommend that you always
516
- # have discontinuity flags between fragments if the fragment timestamps
517
- # are not accurate or if fragments might be missing. You should not
518
- # place discontinuity flags between fragments for the player timeline to
519
- # accurately map to the producer timestamps.
904
+ # any overlap or gap between fragments (as is typical if
905
+ # HLSFragmentSelector is set to `SERVER_TIMESTAMP`), the media player
906
+ # timeline will also have small gaps between fragments in some places,
907
+ # and will overwrite frames in other places. Gaps in the media player
908
+ # timeline can cause playback to stall and overlaps can cause playback
909
+ # to be jittery. When there are discontinuity flags between fragments,
910
+ # the media player is expected to reset the timeline, resulting in the
911
+ # next fragment being played immediately after the previous fragment.
912
+ #
913
+ # The following modes are supported:
914
+ #
915
+ # * `ALWAYS`\: a discontinuity marker is placed between every fragment
916
+ # in the HLS media playlist. It is recommended to use a value of
917
+ # `ALWAYS` if the fragment timestamps are not accurate.
918
+ #
919
+ # * `NEVER`\: no discontinuity markers are placed anywhere. It is
920
+ # recommended to use a value of `NEVER` to ensure the media player
921
+ # timeline most accurately maps to the producer timestamps.
922
+ #
923
+ # * `ON_DISCONTIUNITY`\: a discontinuity marker is placed between
924
+ # fragments that have a gap or overlap of more than 50 milliseconds.
925
+ # For most playback scenarios, it is recommended to use a value of
926
+ # `ON_DISCONTINUITY` so that the media player timeline is only reset
927
+ # when there is a significant issue with the media timeline (e.g. a
928
+ # missing fragment).
929
+ #
930
+ # The default is `ALWAYS` when HLSFragmentSelector is set to
931
+ # `SERVER_TIMESTAMP`, and `NEVER` when it is set to
932
+ # `PRODUCER_TIMESTAMP`.
520
933
  #
521
934
  # @option params [String] :display_fragment_timestamp
522
935
  # Specifies when the fragment start timestamps should be included in the
@@ -539,8 +952,8 @@ module Aws::KinesisVideoArchivedMedia
539
952
  # can be between 300 (5 minutes) and 43200 (12 hours).
540
953
  #
541
954
  # When a session expires, no new calls to `GetHLSMasterPlaylist`,
542
- # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or `GetMP4MediaFragment`
543
- # can be made for that session.
955
+ # `GetHLSMediaPlaylist`, `GetMP4InitFragment`, `GetMP4MediaFragment`, or
956
+ # `GetTSFragment` can be made for that session.
544
957
  #
545
958
  # The default is 300 (5 minutes).
546
959
  #
@@ -559,8 +972,8 @@ module Aws::KinesisVideoArchivedMedia
559
972
  # playback. We recommend that a live HLS media playlist have a minimum
560
973
  # of 3 fragments and a maximum of 10 fragments.
561
974
  #
562
- # The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
563
- # `PlaybackMode` is `ON_DEMAND`.
975
+ # The default is 5 fragments if `PlaybackMode` is `LIVE` or
976
+ # `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.
564
977
  #
565
978
  # The maximum value of 1,000 fragments corresponds to more than 16
566
979
  # minutes of video on streams with 1-second fragments, and more than 2
@@ -575,7 +988,7 @@ module Aws::KinesisVideoArchivedMedia
575
988
  # resp = client.get_hls_streaming_session_url({
576
989
  # stream_name: "StreamName",
577
990
  # stream_arn: "ResourceARN",
578
- # playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
991
+ # playback_mode: "LIVE", # accepts LIVE, LIVE_REPLAY, ON_DEMAND
579
992
  # hls_fragment_selector: {
580
993
  # fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
581
994
  # timestamp_range: {
@@ -584,7 +997,7 @@ module Aws::KinesisVideoArchivedMedia
584
997
  # },
585
998
  # },
586
999
  # container_format: "FRAGMENTED_MP4", # accepts FRAGMENTED_MP4, MPEG_TS
587
- # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER
1000
+ # discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER, ON_DISCONTINUITY
588
1001
  # display_fragment_timestamp: "ALWAYS", # accepts ALWAYS, NEVER
589
1002
  # expires: 1,
590
1003
  # max_media_playlist_fragment_results: 1,
@@ -622,9 +1035,31 @@ module Aws::KinesisVideoArchivedMedia
622
1035
  # megabytes per second (or 200 megabits per second) during a
623
1036
  # `GetMediaForFragmentList` session.
624
1037
  #
1038
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1039
+ # media API, in addition to the HTTP status code and the response body,
1040
+ # it includes the following pieces of information:
1041
+ #
1042
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1043
+ # in addition to what the HTTP status code provides.
1044
+ #
1045
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1046
+ # AWS, the support team can better diagnose the problem if given the
1047
+ # Request Id.
1048
+ #
1049
+ # Both the HTTP status code and the ErrorType header can be utilized to
1050
+ # make programmatic decisions about whether errors are retry-able and
1051
+ # under what conditions, as well as provide information on what actions
1052
+ # the client programmer might need to take in order to successfully try
1053
+ # again.
1054
+ #
1055
+ # For more information, see the **Errors** section at the bottom of
1056
+ # this
1057
+ # topic, as well as [Common Errors][2].
1058
+ #
625
1059
  #
626
1060
  #
627
1061
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1062
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
628
1063
  #
629
1064
  # @option params [required, String] :stream_name
630
1065
  # The name of the stream from which to retrieve fragment media.
@@ -674,9 +1109,31 @@ module Aws::KinesisVideoArchivedMedia
674
1109
  #
675
1110
  # </note>
676
1111
  #
1112
+ # If an error is thrown after invoking a Kinesis Video Streams archived
1113
+ # media API, in addition to the HTTP status code and the response body,
1114
+ # it includes the following pieces of information:
1115
+ #
1116
+ # * `x-amz-ErrorType` HTTP header – contains a more specific error type
1117
+ # in addition to what the HTTP status code provides.
1118
+ #
1119
+ # * `x-amz-RequestId` HTTP header – if you want to report an issue to
1120
+ # AWS, the support team can better diagnose the problem if given the
1121
+ # Request Id.
1122
+ #
1123
+ # Both the HTTP status code and the ErrorType header can be utilized to
1124
+ # make programmatic decisions about whether errors are retry-able and
1125
+ # under what conditions, as well as provide information on what actions
1126
+ # the client programmer might need to take in order to successfully try
1127
+ # again.
1128
+ #
1129
+ # For more information, see the **Errors** section at the bottom of
1130
+ # this
1131
+ # topic, as well as [Common Errors][2].
1132
+ #
677
1133
  #
678
1134
  #
679
1135
  # [1]: https://docs.aws.amazon.com/cli/latest/reference/
1136
+ # [2]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html
680
1137
  #
681
1138
  # @option params [required, String] :stream_name
682
1139
  # The name of the stream from which to retrieve a fragment list.
@@ -747,7 +1204,7 @@ module Aws::KinesisVideoArchivedMedia
747
1204
  params: params,
748
1205
  config: config)
749
1206
  context[:gem_name] = 'aws-sdk-kinesisvideoarchivedmedia'
750
- context[:gem_version] = '1.14.0'
1207
+ context[:gem_version] = '1.19.0'
751
1208
  Seahorse::Client::Request.new(handlers, context)
752
1209
  end
753
1210