# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE
module Aws::KinesisVideoArchivedMedia
module Types
# Represents a segment of video or other time-delimited data.
#
# @!attribute [rw] fragment_number
# The index value of the fragment.
# @return [String]
#
# @!attribute [rw] fragment_size_in_bytes
# The total fragment size, including information about the fragment
# and contained media data.
# @return [Integer]
#
# @!attribute [rw] producer_timestamp
# The time stamp from the producer corresponding to the fragment.
# @return [Time]
#
# @!attribute [rw] server_timestamp
# The time stamp from the AWS server corresponding to the fragment.
# @return [Time]
#
# @!attribute [rw] fragment_length_in_milliseconds
# The playback duration or other time value associated with the
# fragment.
# @return [Integer]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/Fragment AWS API Documentation
#
class Fragment < Struct.new(
:fragment_number,
:fragment_size_in_bytes,
:producer_timestamp,
:server_timestamp,
:fragment_length_in_milliseconds)
include Aws::Structure
end
# Describes the time stamp range and time stamp origin of a range of
# fragments.
#
# @note When making an API call, you may pass FragmentSelector
# data as a hash:
#
# {
# fragment_selector_type: "PRODUCER_TIMESTAMP", # required, accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
# timestamp_range: { # required
# start_timestamp: Time.now, # required
# end_timestamp: Time.now, # required
# },
# }
#
# @!attribute [rw] fragment_selector_type
# The origin of the time stamps to use (Server or Producer).
# @return [String]
#
# @!attribute [rw] timestamp_range
# The range of time stamps to return.
# @return [Types::TimestampRange]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/FragmentSelector AWS API Documentation
#
class FragmentSelector < Struct.new(
:fragment_selector_type,
:timestamp_range)
include Aws::Structure
end
# @note When making an API call, you may pass GetHLSStreamingSessionURLInput
# data as a hash:
#
# {
# stream_name: "StreamName",
# stream_arn: "ResourceARN",
# playback_mode: "LIVE", # accepts LIVE, ON_DEMAND
# hls_fragment_selector: {
# fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
# timestamp_range: {
# start_timestamp: Time.now,
# end_timestamp: Time.now,
# },
# },
# discontinuity_mode: "ALWAYS", # accepts ALWAYS, NEVER
# expires: 1,
# max_media_playlist_fragment_results: 1,
# }
#
# @!attribute [rw] stream_name
# The name of the stream for which to retrieve the HLS master playlist
# URL.
#
# You must specify either the `StreamName` or the `StreamARN`.
# @return [String]
#
# @!attribute [rw] stream_arn
# The Amazon Resource Name (ARN) of the stream for which to retrieve
# the HLS master playlist URL.
#
# You must specify either the `StreamName` or the `StreamARN`.
# @return [String]
#
# @!attribute [rw] playback_mode
# Whether to retrieve live or archived, on-demand data.
#
# Features of the two types of session include the following:
#
# * LIVE
\: For sessions of this type, the HLS
# media playlist is continually updated with the latest fragments as
# they become available. We recommend that the media player retrieve
# a new playlist on a one-second interval. When this type of session
# is played in a media player, the user interface typically displays
# a "live" notification, with no scrubber control for choosing the
# position in the playback window to display.
#
# In `LIVE` mode, the newest available fragments are included in an
# HLS media playlist, even if there is a gap between fragments (that
# is, if a fragment is missing). A gap like this might cause a media
# player to halt or cause a jump in playback. In this mode,
# fragments are not added to the HLS media playlist if they are
# older than the newest fragment in the playlist. If the missing
# fragment becomes available after a subsequent fragment is added to
# the playlist, the older fragment is not added, and the gap is not
# filled.
#
#
#
# * ON_DEMAND
\: For sessions of this type, the
# HLS media playlist contains all the fragments for the session, up
# to the number that is specified in
# `MaxMediaPlaylistFragmentResults`. The playlist must be retrieved
# only once for each session. When this type of session is played in
# a media player, the user interface typically displays a scrubber
# control for choosing the position in the playback window to
# display.
#
# In both playback modes, if `FragmentSelectorType` is
# `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the
# same start time stamp, the fragment that has the larger fragment
# number (that is, the newer fragment) is included in the HLS media
# playlist. The other fragments are not included. Fragments that have
# different time stamps but have overlapping durations are still
# included in the HLS media playlist. This can lead to unexpected
# behavior in the media player.
#
# The default is `LIVE`.
# @return [String]
#
# @!attribute [rw] hls_fragment_selector
# The time range of the requested fragment, and the source of the time
# stamps.
#
# This parameter is required if `PlaybackMode` is `ON_DEMAND`. This
# parameter is optional if `PlaybackMode` is `LIVE`. If `PlaybackMode`
# is `LIVE`, the `FragmentSelectorType` can be set, but the
# `TimestampRange` should not be set. If `PlaybackMode` is
# `ON_DEMAND`, both `FragmentSelectorType` and `TimestampRange` must
# be set.
# @return [Types::HLSFragmentSelector]
#
# @!attribute [rw] discontinuity_mode
# Specifies when flags marking discontinuities between fragments will
# be added to the media playlists. The default is `ALWAYS` when
# HLSFragmentSelector is `SERVER_TIMESTAMP`, and `NEVER` when it is
# `PRODUCER_TIMESTAMP`.
#
# Media players typically build a timeline of media content to play,
# based on the time stamps of each fragment. This means that if there
# is any overlap between fragments (as is typical if
# HLSFragmentSelector is `SERVER_TIMESTAMP`), the media player
# timeline has small gaps between fragments in some places, and
# overwrites frames in other places. When there are discontinuity
# flags between fragments, the media player is expected to reset the
# timeline, resulting in the fragment being played immediately after
# the previous fragment. We recommend that you always have
# discontinuity flags between fragments if the fragment time stamps
# are not accurate or if fragments might be missing. You should not
# place discontinuity flags between fragments for the player timeline
# to accurately map to the producer time stamps.
# @return [String]
#
# @!attribute [rw] expires
# The time in seconds until the requested session expires. This value
# can be between 300 (5 minutes) and 43200 (12 hours).
#
# When a session expires, no new calls to `GetHLSMasterPlaylist`,
# `GetHLSMediaPlaylist`, `GetMP4InitFragment`, or
# `GetMP4MediaFragment` can be made for that session.
#
# The default is 300 (5 minutes).
# @return [Integer]
#
# @!attribute [rw] max_media_playlist_fragment_results
# The maximum number of fragments that are returned in the HLS media
# playlists.
#
# When the `PlaybackMode` is `LIVE`, the most recent fragments are
# returned up to this value. When the `PlaybackMode` is `ON_DEMAND`,
# the oldest fragments are returned, up to this maximum number.
#
# When there are a higher number of fragments available in a live HLS
# media playlist, video players often buffer content before starting
# playback. Increasing the buffer size increases the playback latency,
# but it decreases the likelihood that rebuffering will occur during
# playback. We recommend that a live HLS media playlist have a minimum
# of 3 fragments and a maximum of 10 fragments.
#
# The default is 5 fragments if `PlaybackMode` is `LIVE`, and 1,000 if
# `PlaybackMode` is `ON_DEMAND`.
#
# The maximum value of 1,000 fragments corresponds to more than 16
# minutes of video on streams with 1-second fragments, and more than 2
# 1/2 hours of video on streams with 10-second fragments.
# @return [Integer]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURLInput AWS API Documentation
#
class GetHLSStreamingSessionURLInput < Struct.new(
:stream_name,
:stream_arn,
:playback_mode,
:hls_fragment_selector,
:discontinuity_mode,
:expires,
:max_media_playlist_fragment_results)
include Aws::Structure
end
# @!attribute [rw] hls_streaming_session_url
# The URL (containing the session token) that a media player can use
# to retrieve the HLS master playlist.
# @return [String]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURLOutput AWS API Documentation
#
class GetHLSStreamingSessionURLOutput < Struct.new(
:hls_streaming_session_url)
include Aws::Structure
end
# @note When making an API call, you may pass GetMediaForFragmentListInput
# data as a hash:
#
# {
# stream_name: "StreamName", # required
# fragments: ["FragmentNumberString"], # required
# }
#
# @!attribute [rw] stream_name
# The name of the stream from which to retrieve fragment media.
# @return [String]
#
# @!attribute [rw] fragments
# A list of the numbers of fragments for which to retrieve media. You
# retrieve these values with ListFragments.
# @return [Array]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetMediaForFragmentListInput AWS API Documentation
#
class GetMediaForFragmentListInput < Struct.new(
:stream_name,
:fragments)
include Aws::Structure
end
# @!attribute [rw] content_type
# The content type of the requested media.
# @return [String]
#
# @!attribute [rw] payload
# The payload that Kinesis Video Streams returns is a sequence of
# chunks from the specified stream. For information about the chunks,
# see [PutMedia][1]. The chunks that Kinesis Video Streams returns in
# the `GetMediaForFragmentList` call also include the following
# additional Matroska (MKV) tags:
#
# * AWS\_KINESISVIDEO\_FRAGMENT\_NUMBER - Fragment number returned in
# the chunk.
#
# * AWS\_KINESISVIDEO\_SERVER\_SIDE\_TIMESTAMP - Server-side time
# stamp of the fragment.
#
# * AWS\_KINESISVIDEO\_PRODUCER\_SIDE\_TIMESTAMP - Producer-side time
# stamp of the fragment.
#
# The following tags will be included if an exception occurs:
#
# * AWS\_KINESISVIDEO\_FRAGMENT\_NUMBER - The number of the fragment
# that threw the exception
#
# * AWS\_KINESISVIDEO\_EXCEPTION\_ERROR\_CODE - The integer code of
# the exception
#
# * AWS\_KINESISVIDEO\_EXCEPTION\_MESSAGE - A text description of the
# exception
#
#
#
# [1]: http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html
# @return [IO]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetMediaForFragmentListOutput AWS API Documentation
#
class GetMediaForFragmentListOutput < Struct.new(
:content_type,
:payload)
include Aws::Structure
end
# Contains the range of time stamps for the requested media, and the
# source of the time stamps.
#
# @note When making an API call, you may pass HLSFragmentSelector
# data as a hash:
#
# {
# fragment_selector_type: "PRODUCER_TIMESTAMP", # accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
# timestamp_range: {
# start_timestamp: Time.now,
# end_timestamp: Time.now,
# },
# }
#
# @!attribute [rw] fragment_selector_type
# The source of the time stamps for the requested media.
#
# When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
# GetHLSStreamingSessionURLInput$PlaybackMode is `ON_DEMAND`, the
# first fragment ingested with a producer time stamp within the
# specified FragmentSelector$TimestampRange is included in the media
# playlist. In addition, the fragments with producer time stamps
# within the `TimestampRange` ingested immediately following the first
# fragment (up to the
# GetHLSStreamingSessionURLInput$MaxMediaPlaylistFragmentResults
# value) are included.
#
# Fragments that have duplicate producer time stamps are deduplicated.
# This means that if producers are producing a stream of fragments
# with producer time stamps that are approximately equal to the true
# clock time, the HLS media playlists will contain all of the
# fragments within the requested time stamp range. If some fragments
# are ingested within the same time range and very different points in
# time, only the oldest ingested collection of fragments are returned.
#
# When `FragmentSelectorType` is set to `PRODUCER_TIMESTAMP` and
# GetHLSStreamingSessionURLInput$PlaybackMode is `LIVE`, the producer
# time stamps are used in the MP4 fragments and for deduplication. But
# the most recently ingested fragments based on server time stamps are
# included in the HLS media playlist. This means that even if
# fragments ingested in the past have producer time stamps with values
# now, they are not included in the HLS media playlist.
#
# The default is `SERVER_TIMESTAMP`.
# @return [String]
#
# @!attribute [rw] timestamp_range
# The start and end of the time stamp range for the requested media.
#
# This value should not be present if `PlaybackType` is `LIVE`.
# @return [Types::HLSTimestampRange]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/HLSFragmentSelector AWS API Documentation
#
class HLSFragmentSelector < Struct.new(
:fragment_selector_type,
:timestamp_range)
include Aws::Structure
end
# The start and end of the time stamp range for the requested media.
#
# This value should not be present if `PlaybackType` is `LIVE`.
#
# The values in the `HLSTimestampRange` are inclusive. Fragments that
# begin before the start time but continue past it, or fragments that
# begin before the end time but continue past it, are included in the
# session.
#
#
#
# @note When making an API call, you may pass HLSTimestampRange
# data as a hash:
#
# {
# start_timestamp: Time.now,
# end_timestamp: Time.now,
# }
#
# @!attribute [rw] start_timestamp
# The start of the time stamp range for the requested media.
#
# If the `HLSTimestampRange` value is specified, the `StartTimestamp`
# value is required.
#
# This value is inclusive. Fragments that start before the
# `StartTimestamp` and continue past it are included in the session.
# If `FragmentSelectorType` is `SERVER_TIMESTAMP`, the
# `StartTimestamp` must be later than the stream head.
#
#
# @return [Time]
#
# @!attribute [rw] end_timestamp
# The end of the time stamp range for the requested media. This value
# must be within 3 hours of the specified `StartTimestamp`, and it
# must be later than the `StartTimestamp` value.
#
# If `FragmentSelectorType` for the request is `SERVER_TIMESTAMP`,
# this value must be in the past.
#
# If the `HLSTimestampRange` value is specified, the `EndTimestamp`
# value is required.
#
# This value is inclusive. The `EndTimestamp` is compared to the
# (starting) time stamp of the fragment. Fragments that start before
# the `EndTimestamp` value and continue past it are included in the
# session.
#
#
# @return [Time]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/HLSTimestampRange AWS API Documentation
#
class HLSTimestampRange < Struct.new(
:start_timestamp,
:end_timestamp)
include Aws::Structure
end
# @note When making an API call, you may pass ListFragmentsInput
# data as a hash:
#
# {
# stream_name: "StreamName", # required
# max_results: 1,
# next_token: "String",
# fragment_selector: {
# fragment_selector_type: "PRODUCER_TIMESTAMP", # required, accepts PRODUCER_TIMESTAMP, SERVER_TIMESTAMP
# timestamp_range: { # required
# start_timestamp: Time.now, # required
# end_timestamp: Time.now, # required
# },
# },
# }
#
# @!attribute [rw] stream_name
# The name of the stream from which to retrieve a fragment list.
# @return [String]
#
# @!attribute [rw] max_results
# The total number of fragments to return. If the total number of
# fragments available is more than the value specified in
# `max-results`, then a ListFragmentsOutput$NextToken is provided in
# the output that you can use to resume pagination.
# @return [Integer]
#
# @!attribute [rw] next_token
# A token to specify where to start paginating. This is the
# ListFragmentsOutput$NextToken from a previously truncated response.
# @return [String]
#
# @!attribute [rw] fragment_selector
# Describes the time stamp range and time stamp origin for the range
# of fragments to return.
# @return [Types::FragmentSelector]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/ListFragmentsInput AWS API Documentation
#
class ListFragmentsInput < Struct.new(
:stream_name,
:max_results,
:next_token,
:fragment_selector)
include Aws::Structure
end
# @!attribute [rw] fragments
# A list of fragment numbers that correspond to the time stamp range
# provided.
# @return [Array]
#
# @!attribute [rw] next_token
# If the returned list is truncated, the operation returns this token
# to use to retrieve the next page of results. This value is `null`
# when there are no more results to return.
# @return [String]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/ListFragmentsOutput AWS API Documentation
#
class ListFragmentsOutput < Struct.new(
:fragments,
:next_token)
include Aws::Structure
end
# The range of time stamps for which to return fragments.
#
# @note When making an API call, you may pass TimestampRange
# data as a hash:
#
# {
# start_timestamp: Time.now, # required
# end_timestamp: Time.now, # required
# }
#
# @!attribute [rw] start_timestamp
# The starting time stamp in the range of time stamps for which to
# return fragments.
# @return [Time]
#
# @!attribute [rw] end_timestamp
# The ending time stamp in the range of time stamps for which to
# return fragments.
# @return [Time]
#
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/TimestampRange AWS API Documentation
#
class TimestampRange < Struct.new(
:start_timestamp,
:end_timestamp)
include Aws::Structure
end
end
end