HLS .m3u8 Manifests
Veeplay supports .m3u8 HLS manifests with an EXT-X-VERSION of 3 or higher for live streaming and video on demand (VOD). When Veeplay encounters an ad avail, it attempts ad insertion or replacement, based on the type of content. If there aren't enough ads to fill the duration, for the remainder of the ad avail, Veeplay displays the underlying content stream or the configured slate.
HLS manifests must satisfy the following requirements:
Manifests must be accessible on the public internet.
Manifests must be live or video-on-demand (VOD).
Manifests must have an
EXT-X-VERSIONof3or higher.For live content, manifests must contain markers to delineate ad avails. This is optional for VOD content, which can use VMAP timeoffsets instead.
The manifest file must have ad slots marked with one of the following:
#EXT-X-CUE-OUT / #EXT-X-CUE-IN (more common) with durations as shown in the following example.
#EXT-X-DATERANGE (less common) with durations as shown in the following example.
All fields shown for
#EXT-X-DATERANGEare required.
HLS master manifests must follow the HLS specification documented at HTTP Live Streaming: Master Playlist Tags. In particular,
#EXT-X-STREAM-INFmust include the fieldsRESOLUTION,BANDWIDTH, andCODEC.
HLS Manifest Tag Handling#
EXT-X-CUE Tags#
Veeplay replaces EXT-X-CUE-OUT, EXT-X-CUE-OUT-CONT, and EXT-X-CUE-IN tags in the input manifest with EXT-X-DISCONTINUITY tags in the output manifest. The DISCONTINUITY tags mark the following boundaries:
- Where the main content transitions to an ad
 - Where one ad transitions to another ad
 - Where an ad transitions back to the main content
 
EXT-X-DATERANGE Tags#
Veeplay passes through EXT-X-DATERANGE tags from the input manifest to the output manifest. Veeplay also inserts EXT-X-DISCONTINUITY tags that correspond to the DATERANGE tags. The DISCONTINUITY tags mark the following boundaries:
- Where the main content transitions to an ad
 - Where one ad transitions to another ad
 - Where an ad transitions back to the main content
 
EXT-X-KEY Tags#
Veeplay passes through EXT-X-KEY tags from the input manifest. These tags indicate that the main content is encrypted. Since ads aren't encrypted, Veeplay inserts EXT-X-KEY:METHOD=NONE at the start of an ad avail. When playback returns to the main content, Veplay re-enables encryption by inserting the EXT-X-KEY tag with the METHOD value defined as the encryption type.
Unrecognized Tags#
Veeplay passes through all unknown and custom tags from the input manifest to the output manifest.
HLS Supported Ad Markers#
Veeplay identifies ad avail boundaries in an HLS manifest ad markers in the input manifest.
EXT-X-CUE-OUT and EXT-X-CUE-IN#
This type of ad marker is the most common. The following examples show options for these cue markers.
EXT-X-DATERANGE#
With EXT-X-DATERANGE ad marker tags, you use SCTE35-OUT attributes to specify the timing of the ad avail. 
Note
Veeplay ignores any START-DATE attributes that are provided for EXT-X-DATERANGE ad markers. 
You can specify the ad avail in one of the following ways:
EXT-X-DATERANGEtag withSCTE35-OUTandDURATIONspecifications.Example
Paired
EXT-X-DATERANGEtags, the first with aSCTE35-OUTspecification and the second with aSCTE35-INspecification.Example
A combination of the prior options. You specify an
EXT-X-DATERANGEtag withSCTE35-OUTandDURATIONspecifications followed by anEXT-X-DATERANGEtag with aSCTE35-INspecification. In this case, Veeplay uses the earliest cue-in setting from the two specifications.Example
EXT-X-SPLICEPOINT-SCTE35#
You append the EXT-X-SPLICEPOINT-SCTE35 ad marker tag with a SCTE-35 payload in base64-encoded binary. The decoded binary must provide a SCTE-35 splice_info_section containing the cue-out marker 0x34, for provider placement opportunity start, and the cue-in marker 0x35, for provider placement opportunity end. 
The following example shows the splice point specification with base64-encoded binary payloads that specify the cue-out and cue-in markers.