Working with VOD sources - AWS Elemental MediaTailor

Working with VOD sources

A VOD source represents a single piece of content, such as a video or an episode of a podcast, that you add to your source location. You add one or more VOD sources to your source location, and then associate each VOD source with a program after you create your channel.

Each VOD source must have at least one package configuration. A package configuration specifies a package format, manifest location, and source group for your VOD source. When you create your channel, you use the package configuration's source groups to create the corresponding outputs on your channel. For example, if your source is packaged in two different formats—HLS and DASH—then you'd create two package configurations, one for DASH and one for HLS. Then, you would create two channel outputs, one for each package configuration. Each channel output provides an endpoint that's used for playback requests. So, using the preceding example, the channel would provide an endpoint for HLS playback requests and an endpoint for DASH playback requests.

If you would like the offsets of ad markers in your manifest to be detected automatically, each ad marker must appear at the same offset across all package configurations and have a duration of zero. For HLS, MediaTailor will detect DATERANGE and EXT-X-CUE-OUT tags. For DASH, HLS will detect the first Event tag within each EventStream tag.

In the following example, an ad break opportunity will be detected at an offset of 12000ms because of the DATERANGE tag with a duration of 0.0. The first DATERANGE tag at an offset of 0ms will not be detected because it has a duration of 10.0.

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-DATERANGE:ID="1001",START-DATE="2021-09-16T23:51:05.249Z",DURATION=10.0,SCTE35-OUT=0xFC302500000003289800FFF01405000003E97FEFFE1D381BD8FE000DBBA00001010100000FD2B275 #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_0.ts #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_1.ts #EXT-X-DATERANGE:ID="1001",START-DATE="2021-09-16T23:51:05.249Z",DURATION=0.0,SCTE35-OUT=0xFC302500000003289800FFF01405000003E97FEFFE1D381BD8FE000DBBA00001010100000FD2B275 #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_2.ts

In the following example, an ad break opportunity will be detected at an offset of 0ms because the EXT-X-CUE-OUT tag has a duration of 0 and is followed immediately by an EXT-X-CUE-IN tag. The second EXT-X-CUE-OUT/EXT-X-CUE-IN pair will not be detected because it has a duration of 10.

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-CUE-OUT:0 #EXT-X-CUE-IN #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_0.ts #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_1.ts #EXT-X-CUE-OUT:10 ... #EXT-X-CUE-IN #EXTINF:6.000, ../../../719f911124e0495cbb067c91c1d6c298/1785a16ca14d4c2884781f25333f6766/index_1_2.ts

In the following example, an ad break opportunity will be detected at an offset of 0ms because the first Event in the EventStream occurs in the period starting at PT0.000S. The second Event in the EventStream will not be detected.

<Period start="PT0.000S" id="9912561" duration="PT29.433S"> <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"> <Event duration="0"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="1241950593" tier="4095"> <scte35:SpliceInsert spliceEventId="99" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1"> <scte35:Program><scte35:SpliceTime ptsTime="3552273000"/></scte35:Program> <scte35:BreakDuration autoReturn="true" duration="2700000"/> </scte35:SpliceInsert> </scte35:SpliceInfoSection> </Event> <Event duration="0"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="1241950593" tier="4095"> <scte35:SpliceInsert spliceEventId="99" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1"> <scte35:Program><scte35:SpliceTime ptsTime="3552273000"/></scte35:Program> <scte35:BreakDuration autoReturn="true" duration="2700000"/> </scte35:SpliceInsert> </scte35:SpliceInfoSection> </Event> </EventStream> ... </Period>

Adding VOD sources to your source location

The following procedure explains how to add VOD sources to your source location and set up package configurations using the MediaTailor console. For information about how to add VOD sources using the MediaTailor API, see CreateVodSource in the AWS Elemental MediaTailor API Reference.

Important

Before you add your VOD sources, make sure that they meet these requirements:

  • Source variants must all have the same length, as determined by the source manifest.

  • Within a package configuration, each source must have the same number of child streams.

Because of these requirements, we don't support per title or automated ABR, because these encoding methods can produce varying manifest lengths and child streams.

We recommend that you use an encoding template that includes a minimum segment length to ensure that your encoded sources meet these requirements.

To add VOD sources to your source locations
  1. Open the MediaTailor console at https://console.aws.amazon.com/mediatailor/.

  2. In the navigation pane, choose Channel assembly > Source locations.

  3. In the Source locations pane, choose the source location that you created in the To create a source location procedure.

  4. Choose Add VOD source.

  5. Under VOD source details, enter a name for your VOD source:

    • Name: An identifier for your VOD source, such as my-example-video.

  6. Under Package configurations > source-group-name enter information about the package configuration:

    Note

    Your source's package configurations must all have the same duration, as determined by the source's manifest. And, all of the sources within a package configuration must have the same number of child streams. To meet these requirements, we recommend that you use an encoding template for your assets. We recommend that you use an encoding template with a minimum segment length of one second. MediaTailor doesn't support per title or automated adaptive bitrate streaming (ABR) because these encoding methods violate these requirements.

    • Source group: Enter a source group name that describes this package configuration, such as HLS-4k. Make a note of this name; you'll reference it when you create your channel's output. For more information, see Using source groups with your channel's outputs.

    • Type: Select the packaged format for this configuration. MediaTailor supports HLS and DASH.

    • Relative path: The relative path from the source location's Base HTTP URL to the manifest. For example, /my/path/index.m3u8.

      Note

      MediaTailor automatically imports all of the closed captions and child streams contained within a parent manifest. You don't need to create separate package configurations for each of your sources renditions (DASH) or variant streams (HLS).

    For more information about package configurations, see Using package configurations.

  7. Choose Add VOD source.

    If you want to add more VOD sources, repeat steps 4-7 in the procedure.