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