/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Aws { namespace KinesisVideoArchivedMedia { namespace Model { /** */ class GetHLSStreamingSessionURLRequest : public KinesisVideoArchivedMediaRequest { public: AWS_KINESISVIDEOARCHIVEDMEDIA_API GetHLSStreamingSessionURLRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "GetHLSStreamingSessionURL"; } AWS_KINESISVIDEOARCHIVEDMEDIA_API Aws::String SerializePayload() const override; /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline const Aws::String& GetStreamName() const{ return m_streamName; } /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline bool StreamNameHasBeenSet() const { return m_streamNameHasBeenSet; } /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline void SetStreamName(const Aws::String& value) { m_streamNameHasBeenSet = true; m_streamName = value; } /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline void SetStreamName(Aws::String&& value) { m_streamNameHasBeenSet = true; m_streamName = std::move(value); } /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline void SetStreamName(const char* value) { m_streamNameHasBeenSet = true; m_streamName.assign(value); } /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamName(const Aws::String& value) { SetStreamName(value); return *this;} /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamName(Aws::String&& value) { SetStreamName(std::move(value)); return *this;} /** *

The name of the stream for which to retrieve the HLS master playlist URL.

*

You must specify either the StreamName or the * StreamARN.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamName(const char* value) { SetStreamName(value); return *this;} /** *

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.

*/ inline const Aws::String& GetStreamARN() const{ return m_streamARN; } /** *

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.

*/ inline bool StreamARNHasBeenSet() const { return m_streamARNHasBeenSet; } /** *

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.

*/ inline void SetStreamARN(const Aws::String& value) { m_streamARNHasBeenSet = true; m_streamARN = value; } /** *

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.

*/ inline void SetStreamARN(Aws::String&& value) { m_streamARNHasBeenSet = true; m_streamARN = std::move(value); } /** *

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.

*/ inline void SetStreamARN(const char* value) { m_streamARNHasBeenSet = true; m_streamARN.assign(value); } /** *

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.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamARN(const Aws::String& value) { SetStreamARN(value); return *this;} /** *

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.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamARN(Aws::String&& value) { SetStreamARN(std::move(value)); return *this;} /** *

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.

*/ inline GetHLSStreamingSessionURLRequest& WithStreamARN(const char* value) { SetStreamARN(value); return *this;} /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline const HLSPlaybackMode& GetPlaybackMode() const{ return m_playbackMode; } /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline bool PlaybackModeHasBeenSet() const { return m_playbackModeHasBeenSet; } /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline void SetPlaybackMode(const HLSPlaybackMode& value) { m_playbackModeHasBeenSet = true; m_playbackMode = value; } /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline void SetPlaybackMode(HLSPlaybackMode&& value) { m_playbackModeHasBeenSet = true; m_playbackMode = std::move(value); } /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline GetHLSStreamingSessionURLRequest& WithPlaybackMode(const HLSPlaybackMode& value) { SetPlaybackMode(value); return *this;} /** *

Whether to retrieve live, live replay, or archived, on-demand data.

*

Features of the three types of sessions 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.

    *
  • LIVE_REPLAY : For sessions of this * type, the HLS media playlist is updated similarly to how it is updated for * LIVE mode except that it starts by including fragments from a given * start time. Instead of fragments being added as they are ingested, fragments are * added as the duration of the next fragment elapses. For example, if the * fragments in the session are two seconds long, then a new fragment is added to * the media playlist every two seconds. This mode is useful to be able to start * playback from when an event is detected and continue live streaming media that * has not yet been ingested as of the time of the session creation. This mode is * also useful to stream previously archived media without being limited by the * 1,000 fragment limit in the ON_DEMAND mode.

  • * 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 all * playback modes, if FragmentSelectorType is * PRODUCER_TIMESTAMP, and if there are multiple fragments with the * same start timestamp, the fragment that has the largest fragment number (that * is, the newest fragment) is included in the HLS media playlist. The other * fragments are not included. Fragments that have different timestamps 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.

*/ inline GetHLSStreamingSessionURLRequest& WithPlaybackMode(HLSPlaybackMode&& value) { SetPlaybackMode(std::move(value)); return *this;} /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline const HLSFragmentSelector& GetHLSFragmentSelector() const{ return m_hLSFragmentSelector; } /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline bool HLSFragmentSelectorHasBeenSet() const { return m_hLSFragmentSelectorHasBeenSet; } /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline void SetHLSFragmentSelector(const HLSFragmentSelector& value) { m_hLSFragmentSelectorHasBeenSet = true; m_hLSFragmentSelector = value; } /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline void SetHLSFragmentSelector(HLSFragmentSelector&& value) { m_hLSFragmentSelectorHasBeenSet = true; m_hLSFragmentSelector = std::move(value); } /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline GetHLSStreamingSessionURLRequest& WithHLSFragmentSelector(const HLSFragmentSelector& value) { SetHLSFragmentSelector(value); return *this;} /** *

The time range of the requested fragment and the source of the * timestamps.

This parameter is required if PlaybackMode is * ON_DEMAND or LIVE_REPLAY. 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 or LIVE_REPLAY, both * FragmentSelectorType and TimestampRange must be * set.

*/ inline GetHLSStreamingSessionURLRequest& WithHLSFragmentSelector(HLSFragmentSelector&& value) { SetHLSFragmentSelector(std::move(value)); return *this;} /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline const ContainerFormat& GetContainerFormat() const{ return m_containerFormat; } /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline bool ContainerFormatHasBeenSet() const { return m_containerFormatHasBeenSet; } /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline void SetContainerFormat(const ContainerFormat& value) { m_containerFormatHasBeenSet = true; m_containerFormat = value; } /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline void SetContainerFormat(ContainerFormat&& value) { m_containerFormatHasBeenSet = true; m_containerFormat = std::move(value); } /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline GetHLSStreamingSessionURLRequest& WithContainerFormat(const ContainerFormat& value) { SetContainerFormat(value); return *this;} /** *

Specifies which format should be used for packaging the media. Specifying the * FRAGMENTED_MP4 container format packages the media into MP4 * fragments (fMP4 or CMAF). This is the recommended packaging because there is * minimal packaging overhead. The other container format option is * MPEG_TS. HLS has supported MPEG TS chunks since it was released and * is sometimes the only supported packaging on older HLS players. MPEG TS * typically has a 5-25 percent packaging overhead. This means MPEG TS typically * requires 5-25 percent more bandwidth and cost than fMP4.

The default is * FRAGMENTED_MP4.

*/ inline GetHLSStreamingSessionURLRequest& WithContainerFormat(ContainerFormat&& value) { SetContainerFormat(std::move(value)); return *this;} /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline const HLSDiscontinuityMode& GetDiscontinuityMode() const{ return m_discontinuityMode; } /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline bool DiscontinuityModeHasBeenSet() const { return m_discontinuityModeHasBeenSet; } /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline void SetDiscontinuityMode(const HLSDiscontinuityMode& value) { m_discontinuityModeHasBeenSet = true; m_discontinuityMode = value; } /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline void SetDiscontinuityMode(HLSDiscontinuityMode&& value) { m_discontinuityModeHasBeenSet = true; m_discontinuityMode = std::move(value); } /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline GetHLSStreamingSessionURLRequest& WithDiscontinuityMode(const HLSDiscontinuityMode& value) { SetDiscontinuityMode(value); return *this;} /** *

Specifies when flags marking discontinuities between fragments are added to * the media playlists.

Media players typically build a timeline of media * content to play, based on the timestamps of each fragment. This means that if * there is any overlap or gap between fragments (as is typical if * HLSFragmentSelector is set to SERVER_TIMESTAMP), the media * player timeline will also have small gaps between fragments in some places, and * will overwrite frames in other places. Gaps in the media player timeline can * cause playback to stall and overlaps can cause playback to be jittery. When * there are discontinuity flags between fragments, the media player is expected to * reset the timeline, resulting in the next fragment being played immediately * after the previous fragment.

The following modes are supported:

    *
  • ALWAYS: a discontinuity marker is placed between every * fragment in the HLS media playlist. It is recommended to use a value of * ALWAYS if the fragment timestamps are not accurate.

  • *

    NEVER: no discontinuity markers are placed anywhere. It is * recommended to use a value of NEVER to ensure the media player * timeline most accurately maps to the producer timestamps.

  • * ON_DISCONTINUITY: a discontinuity marker is placed between * fragments that have a gap or overlap of more than 50 milliseconds. For most * playback scenarios, it is recommended to use a value of * ON_DISCONTINUITY so that the media player timeline is only reset * when there is a significant issue with the media timeline (e.g. a missing * fragment).

The default is ALWAYS when * HLSFragmentSelector is set to SERVER_TIMESTAMP, and * NEVER when it is set to PRODUCER_TIMESTAMP.

*/ inline GetHLSStreamingSessionURLRequest& WithDiscontinuityMode(HLSDiscontinuityMode&& value) { SetDiscontinuityMode(std::move(value)); return *this;} /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline const HLSDisplayFragmentTimestamp& GetDisplayFragmentTimestamp() const{ return m_displayFragmentTimestamp; } /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline bool DisplayFragmentTimestampHasBeenSet() const { return m_displayFragmentTimestampHasBeenSet; } /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline void SetDisplayFragmentTimestamp(const HLSDisplayFragmentTimestamp& value) { m_displayFragmentTimestampHasBeenSet = true; m_displayFragmentTimestamp = value; } /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline void SetDisplayFragmentTimestamp(HLSDisplayFragmentTimestamp&& value) { m_displayFragmentTimestampHasBeenSet = true; m_displayFragmentTimestamp = std::move(value); } /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline GetHLSStreamingSessionURLRequest& WithDisplayFragmentTimestamp(const HLSDisplayFragmentTimestamp& value) { SetDisplayFragmentTimestamp(value); return *this;} /** *

Specifies when the fragment start timestamps should be included in the HLS * media playlist. Typically, media players report the playhead position as a time * relative to the start of the first fragment in the playback session. However, * when the start timestamps are included in the HLS media playlist, some media * players might report the current playhead as an absolute time based on the * fragment timestamps. This can be useful for creating a playback experience that * shows viewers the wall-clock time of the media.

The default is * NEVER. When HLSFragmentSelector is * SERVER_TIMESTAMP, the timestamps will be the server start * timestamps. Similarly, when HLSFragmentSelector is * PRODUCER_TIMESTAMP, the timestamps will be the producer start * timestamps.

*/ inline GetHLSStreamingSessionURLRequest& WithDisplayFragmentTimestamp(HLSDisplayFragmentTimestamp&& value) { SetDisplayFragmentTimestamp(std::move(value)); return *this;} /** *

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, * GetMP4MediaFragment, or GetTSFragment can be made for * that session.

The default is 300 (5 minutes).

*/ inline int GetExpires() const{ return m_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, * GetMP4MediaFragment, or GetTSFragment can be made for * that session.

The default is 300 (5 minutes).

*/ inline bool ExpiresHasBeenSet() const { return m_expiresHasBeenSet; } /** *

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, * GetMP4MediaFragment, or GetTSFragment can be made for * that session.

The default is 300 (5 minutes).

*/ inline void SetExpires(int value) { m_expiresHasBeenSet = true; m_expires = value; } /** *

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, * GetMP4MediaFragment, or GetTSFragment can be made for * that session.

The default is 300 (5 minutes).

*/ inline GetHLSStreamingSessionURLRequest& WithExpires(int value) { SetExpires(value); return *this;} /** *

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 or LIVE_REPLAY, and * 1,000 if PlaybackMode is ON_DEMAND.

The * maximum value of 5,000 fragments corresponds to more than 80 minutes of video on * streams with 1-second fragments, and more than 13 hours of video on streams with * 10-second fragments.

*/ inline long long GetMaxMediaPlaylistFragmentResults() const{ return m_maxMediaPlaylistFragmentResults; } /** *

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 or LIVE_REPLAY, and * 1,000 if PlaybackMode is ON_DEMAND.

The * maximum value of 5,000 fragments corresponds to more than 80 minutes of video on * streams with 1-second fragments, and more than 13 hours of video on streams with * 10-second fragments.

*/ inline bool MaxMediaPlaylistFragmentResultsHasBeenSet() const { return m_maxMediaPlaylistFragmentResultsHasBeenSet; } /** *

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 or LIVE_REPLAY, and * 1,000 if PlaybackMode is ON_DEMAND.

The * maximum value of 5,000 fragments corresponds to more than 80 minutes of video on * streams with 1-second fragments, and more than 13 hours of video on streams with * 10-second fragments.

*/ inline void SetMaxMediaPlaylistFragmentResults(long long value) { m_maxMediaPlaylistFragmentResultsHasBeenSet = true; m_maxMediaPlaylistFragmentResults = value; } /** *

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 or LIVE_REPLAY, and * 1,000 if PlaybackMode is ON_DEMAND.

The * maximum value of 5,000 fragments corresponds to more than 80 minutes of video on * streams with 1-second fragments, and more than 13 hours of video on streams with * 10-second fragments.

*/ inline GetHLSStreamingSessionURLRequest& WithMaxMediaPlaylistFragmentResults(long long value) { SetMaxMediaPlaylistFragmentResults(value); return *this;} private: Aws::String m_streamName; bool m_streamNameHasBeenSet = false; Aws::String m_streamARN; bool m_streamARNHasBeenSet = false; HLSPlaybackMode m_playbackMode; bool m_playbackModeHasBeenSet = false; HLSFragmentSelector m_hLSFragmentSelector; bool m_hLSFragmentSelectorHasBeenSet = false; ContainerFormat m_containerFormat; bool m_containerFormatHasBeenSet = false; HLSDiscontinuityMode m_discontinuityMode; bool m_discontinuityModeHasBeenSet = false; HLSDisplayFragmentTimestamp m_displayFragmentTimestamp; bool m_displayFragmentTimestampHasBeenSet = false; int m_expires; bool m_expiresHasBeenSet = false; long long m_maxMediaPlaylistFragmentResults; bool m_maxMediaPlaylistFragmentResultsHasBeenSet = false; }; } // namespace Model } // namespace KinesisVideoArchivedMedia } // namespace Aws