AWS Elemental MediaLive
User Guide

Creating an HLS Output Group

  1. On the Create channel navigation pane, go to the Output groups section and choose Add. The content pane changes to show the Add output group section.

  2. Choose HLS and choose Confirm. More sections appear.

  3. Complete the fields as described below.

  4. When you have entered all the information for one output group, create another output group, if desired. Otherwise, go to the next step.

HLS settings

  • Enter a name for the output group. For example, "Sports Game 10122017 ABR" or "tvchannel59".

  • In CDN Settings, set the value to specify the type of connection that being used to write to the destination URLs (specified in the HLS destinations section lower down on this panel). When you have done that, more fields appear, appropriate to the type of connection. For details on a field, select the field and view the help pane.

  • Change the value of Input loss action, if desired.

  • Complete the Caption language mappings fields only if the output includes embedded captions.

  • Complete the Location section to specify the location and organization of the manifest and asset files at the publishing point. The fields in this section work with the fields in the HLS destinations.

  • Complete the Manifest and segments section to change the default setup of the HLS manifest and the segmentation of output.

  • Complete the DRM section only if you are setting up for DRM using a static key to encrypt the output. in Key provider settings, choose Static key and complete all the other fields as appropriate. For details on a field, select the field and view the help pane.

    In a static key setup, you enter an encryption key in this section (along with other configuration data) and then give that key to the other party (for example, by sending it in an email). Static key is not really a DRM solution and is not particularly secure.

    AWS Elemental MediaLive supports only static key as an encryption option. To use a DRM solution with a key provider, you must deliver the output to AWS Elemental MediaPackage (in other words, set up AWS Elemental MediaPackage as the destination for the output). See the documentation for AWS Elemental MediaPackage.

  • Complete the Ad Marker section if you are including SCTE-35 ad messages in the output. See SCTE-35 Message Processing and specifically Enabling Decoration – HLS.

  • Complete the Captions section.

  • Complete the ID3 section if applicable.

HLS destinations

You must specify two destinations for this output. The destination can be one of the following:

  • A CDN that uses HTTP (or HTTPS) PUT.

  • A CDN that uses HTTP or HTTPS WebDAV.

  • An Akamai CDN (this always uses HTTP or HTTPS).

  • An AWS Elemental MediaStore container (mediastoressl://).

  • An AWS S3 bucket (s3:// or s3ssl://).

(More details about communicating with the destination are specified in the CDN fields in the HLS settings section higher up on this panel.)

Specify the URLs for two destinations. You must specify two destinations because AWS Elemental MediaLive works in redundant mode for outputs: it requires two destinations.

Include the protocol type but do not include a port number.

Specify the path and base filename for manifests and media files. For the folder, give the absolute path to the base filename (but not including the base filename). For example, "http://northamerica/sports". For the base filename, enter a value, for example, "curling", or enter "/" to use the name of the input as the base filename. The URL is one piece of the information used for the location and filenames of the manifest and media files.

HLS outputs

This section contains fields related to the encoding of the video, audio, and captions in the output, and related to the packaging and delivery of the output.

  • Choose Add output if you want more than one output in this output group. An Output line is added for each output. Setup of the individual outputs is described in Step 5: Create Outputs.

  • In the Name modifier field for each output, enter a modifier, if appropriate. See Example of an HLS Output Group for uses for this field.

About HLS Locations and Filenames

HLS output consists of a manifest, one rendition manifest for each output in the output group, and media files: one set of .ts files for each output, and optionally one or more captions files for each output. For example, one manifest file called curling.m3u8, one rendition manifest called curling_high.m3u8, and many .ts files containing the video and audio (each file containing one segment of a specified number of seconds) and three .vtt files for English, French, and Spanish Web-VTT captions.

The location of these files is controlled by several fields in the HLS output group and the individual outputs:

  • The path portion of the URLs in the HLS destinations section. For example, "https://sports". Identifies the location of the manifest and media files.

  • The base filename portion of URL. For example, "curling". Used in the manifest filenames and media filenames.

  • The Name modifier field in HLS outputs section. Required only in output groups with more than one output. For example, "_high". Used in the rendition manifest filenames and in media filenames.

    For example, the manifest file would be "curling", rendition manifest files would be "curling_high" and "curling_low". Media video files would by "curling_high.00001.ts", "curling_high.00002.ts", and so on for output 1, and "curling_medium.00001.ts", "curling_medium.00002.ts", and so on for output 2.

  • The Segment modifier field in Output settings section of each individual output. Always optional. For example, "_high". Used only in the media filenames. Typically used instead of Name modifier, when you have only one output in the output group and you want a modifier in the media but not in the manifest.

    For example, the manifest file would be "curling", the rendition manifest file would be "curling", and media video files would by "curling_high.00001.ts", "curling_high.00002.ts".

  • The Base URL manifest field and Base URL in the Location section. Always optional. These fields are typically used only for non-standard manifests.

  • The Directory structure field in the Location section. Optional. Used only to create subdirectories for the media files. Creates one subdirectory for each output, then creates sub-subdirectories according to the Segments per subdirectory field.

    For example, the high-resolution media files would go in subdirectories with the same name as each rendition manifest: "curling_high" and "curling_low". Inside each subdirectory would be a sub-subdirectory named "00001" (for the first set of media files), "00002" (for the next set of media files), and so on.

Example of an HLS Output Group

You want to stream the curling game to AWS Elemental MediaPackage. You want to create three outputs: high, medium, and low bitrate.

  • In HLS settings, set CDN Settings to HLS WebDAV; this is the type of connection that AWS Elemental MediaPackage uses. Change the CDN fields that appear, or leave the defaults.

  • In HLS settings, choose Location; more fields appear. Leave the defaults in all the fields; these fields are not used in this example.

  • In HLS destinations, set up the primary and backup URLs using the https protocol. The URLs are the Input URLS from the channel in AWS Elemental MediaPackage . As discussed in Setting up the Downstream System, the input in AWS Elemental MediaPackage is identical to the output from AWS Elemental MediaLive. This input URL must already exist in AWS Elemental MediaPackage . For example, for one destination and for the other. Note that in AWS Elemental MediaPackage, URLs always end in "channel", so the base filename in AWS Elemental MediaLive must be "channel".

    The protocol is SSL, therefore complete the username and EC2 Parameter store name field.

  • In HLS outputs, choose Add output twice: two more Output lines are added to this section, for a total of three lines. In each line, enter a modifier: _high in output 1, _medium in output 2, and _low in output 3.

  • Choose the Settings link for each individual output and set up as desired.

Result: Files will be created with the following names:

  • One master manifest: channel.m3u8

  • One rendition manifest for each output: channel_high.m3u8, channel_medium.m3u8, channel_low.m3u8

  • TS files for each output: channel_high.00001.ts, channel_high.00002.ts, channel_high.00003.ts, and so on. And channel_medium.00001.ts, channel_medium.00002.ts, channel_medium.00003.ts, and so on. And channel_low.00001.ts, channel_low.00002.ts, channel_low.00003.ts, and so on.

The files will be published to both URL inputs on AWS Elemental MediaPackage .