Use a virtual linear playlist to simulate a linear stream experience that allows viewers to stream one or more asset(s) in sequence.
Which solution should I use to stream VOD assets?
Use one of the following solutions to allow your viewers to stream VOD assets:
Smartstart: Use Smartstart to generate a virtual linear experience for a single asset.
Virtual Linear Playlist: Use a standard virtual linear playlist to generate a virtual linear experience for multiple assets.
You may create a virtual linear playlist for a single asset. However, the recommended method is to enable Smartstart on your assets in bulk.
Comma-Delimited VOD Playback URL: List all of the desired assets within a playback URL.
Use a virtual linear playlist for better performance.
Live Channel: Schedule VOD assets within a live channel.
A live channel's feed determines what viewers will stream at any given time. This allows the live channel's viewers to stream the same content at the same time. Playback for a virtual linear playlist, on the other hand, always starts with the playlist's first asset.
A virtual linear playlist provides the following advantages over a comma-delimited VOD playback URL:
How does a virtual linear playlist provide better performance?
Comma-Delimited VOD Playback URL: A standard VOD playback session requests ads and inserts them into the manifest upon initiating playback. Playback will not start until the manifest is finalized. The amount of latency that this causes varies according to the number of assets in the comma-delimited VOD playback URL and their duration.
Virtual Linear Playlist: A virtual linear playlist requests ads and inserts them into the manifest when a playback session approaches an ad break. This eliminates or reduces ad request timeouts, stale ads, and the unnecessary depletion of ad inventory.
Smartstart provides a virtual linear experience for a single asset through the use of a virtual linear playlist that only contains that asset.
Enable Smartstart on one or more asset(s) through the Bulk Smartstart endpoint. This endpoint creates a virtual linear playlist that is assigned the same system-defined ID as its asset.
What are the differences between Smartstart and a standard virtual linear playlist?
Smartsmart, which is a specialized version of a virtual linear playlist, provides an efficient method for creating a virtual linear experience for a single asset. Additionally, it creates a virtual linear playlist whose ID matches the asset it contains. This simplifies playback setup by allowing you to leverage asset IDs when generating playback URLs for Smartstart-enabled assets.
You may create a virtual linear playlist for a single asset. However, the virtual linear playlist will be assigned a random ID.
Use virtual linear playlists to provide a virtual linear experience for one or more asset(s). View and manage your virtual linear playlists from the Playlists page.
You may also create, update, and retrieve playlists through the Virtual Linear Playlist API.
Create a virtual linear playlist for Smartstart through the Bulk Smartstart endpoint. This type of virtual linear playlist is assigned the same system-defined ID as its asset.
Key information:
The enforcement of Studio DRM is determined by the manner in which the Require studio approved DRM for playback option is configured on:
Disabling the Studio DRM requirement on a virtual linear playlist does not affect whether an individual asset requires Studio DRM.
Disable Studio DRM protection for the entire virtual linear playlist viewing experience through the following steps:
Disable the desired virtual linear playlist's Require studio approved DRM for playback option.
Add the following query string parameter to the playback URL:
A virtual linear playlist supports the following types of ads:
Pre-roll ads: Add the following query string parameter to the playback URL:
Post-roll ads: Add the following query string parameter to the playback URL:
Ads between assets: You may insert ad placeholders within your virtual linear playlist by adding ad breaks.
Adding an ad break will automatically append it to your virtual linear playlist. Drag the ad break's icon to the desired position.
Alternatively, you add ad breaks through the Virtual Linear Playlist API by defining the ad dictionary between the desired assets.
Playback URLs are provided on the desired playlist's Playback tab.
Alternatively, you can construct a playback URL by using the desired playlist's ID. Each playlist is assigned a 32-character hexadecimal unique identifier upon its creation.
To create a virtual linear playlist
Perform the following steps to determine how ads embedded within assets will behave:
Enable: Set the Embedded Ad Break Duration option to the durations, in seconds, for each ad break within an asset.
Use the Embedded Ad Break Slate Fill option to determine whether ad slate will play when there is insufficient ad content for an ad break. Setting this option to No will return the viewer back to content when there is insufficient ad content for an ad break.
Add assets to the playlist by performing the following steps:
Find the desired asset and then mark the checkbox that appears directly to the left of it.
Assets are added to your playlist in the order in which they are marked. However, they can be reordered after they have been added to your playlist. Reduce this cleanup effort by selecting assets according to the order in which they should appear in your playlist.
Reposition an asset by dragging the icon to the desired position in the playlist.
Add ad breaks to the playlist by performing the following steps:
To modify a virtual linear playlist
Perform one of the following actions:
Find the desired asset and then mark the checkbox that appears directly to the left of it.
Assets are added to your playlist in the order in which they are marked. However, they can be reordered after they have been added to your playlist. Reduce this cleanup effort by selecting assets according to the order in which they should appear in your playlist.
Reposition an asset by dragging the icon to the desired position in the playlist.
Enable: From the Details tab, set the Embedded Ad Break Duration option to the durations, in seconds, for each ad break within an asset.
Use the Embedded Ad Break Slate Fill option to determine whether ad slate will play when there is insufficient ad content for an ad break. Setting this option to No will return the viewer back to content when there is insufficient ad content for an ad break.
To delete a virtual linear playlist
Simulate a more authentic virtual linear experience by implementing the following components:
Timeline
Set up a timeline by including timeline metadata through the dmm.schemas.top query string parameter and then using this metadata to construct the timeline within your player.
Seeking
Use the plts (i.e., playlist timestamp) query string parameter within the playback URL to seek to a specified position in the playlist.
Implement a timeline within your player by leveraging content duration and ad break location information provided within a timeline Dynamic Manifest Marker. A Dynamic Manifest Marker dynamically provides different types of metadata (e.g., timeline and ad break information) within the manifest file.
A timeline Dynamic Manifest Marker does not provide information about ad duration. Additionally, ad break duration is unknown at the start of the playback of a virtual linear playlist. Therefore, we recommend that ad breaks be represented within the timeline as events (e.g., a mark within the timeline).
Include information about requested ads by adding ad break Dynamic Manifest Markers.
Learn more.
Add a timeline Dynamic Manifest Marker to the top of a manifest file by including the following query string parameters in the playback URL:
The pltl (i.e., playlist timeline) query string parameter adds timeline metadata for all of the assets defined within your virtual linear playlist. This could lead to a large timeline when your playlist contains multiple assets or when there are many ad breaks between assets.
The pltl query string parameter is optional for Smartstart-enabled assets.
Sample playback request:
Sample playback request (Smartstart):
Sample representations of timeline metadata for HLS and DASH are provided below.
HLS version 7 and up
A timeline Dynamic Manifest Marker is added as an #EXT-X-DATERANGE tag at the top of a ray manifest file. The X-DATA attribute contains Base64-encoded timeline metadata.
Example:
#EXT-X-DATERANGE:ID="2e64fcbc2c5d4eecbf5fc6bb4c8b2d60:2020-12-18 02:09:28.957000+00:00:playlist",
START-DATE="1970-01-01T00:00:00+00:00",
DURATION=60.3093,
CLASS="urn:uplynk:top-data:playlist:v1",
X-DATA="eyJicmVha3...VwZWF0IjotMX0="
DASH
A timeline Dynamic Manifest Marker is added as an EventStream tag at the top of a manifest file.
Example:
<EventStream schemeIdUri="urn:uplynk:top-data:timeline" timescale="90000" value="top-data">
<Event duration="5877840" id="5877840" presentationTime="0">{"repeat": -1, "content_duration": 60.3093, "breaks_count": 4, "session_id": "d9cab2afee494db7a0a5b877727ef387", "breaks": [{"id": 1, "offset": 11.0080}, {"id": 2, "offset": 26.0000}, {"id": 3, "offset": 33.0026}, {"id": 4, "offset": 52.0053}]}</Event>
</EventStream>
Sample timeline metadata:
{ 'repeat': -1, 'content_duration': 60.3093, 'breaks_count': 4, 'session_id': 'd9cab2afee494db7a0a5b877727ef387', 'breaks': [{ 'id': 1, 'offset': 11.0080 }, { 'id': 2, 'offset': 26.0000 }, { 'id': 3, 'offset': 33.0026 }, { 'id': 4, 'offset': 52.0053 } ] }
A virtual linear playlist allows the player to fetch ads as playback approaches an ad break. Leverage ad break Dynamic Manifest Markers to provide metadata about requested ads.
Add ad break Dynamic Manifest Markers to the manifest file by including the following query string parameter in the playback URL:
Sample playback request:
An ad break Dynamic Manifest Marker may include the following information:
Sample representations of this metadata for HLS and DASH are provided below.
HLS version 7 and up
An ad break Dynamic Manifest Marker is added as an #EXT-X-DATERANGE tag within a manifest file. The X-DATA attribute contains Base64-encoded ad break metadata. The daterange class for this data is:
DASH
An ad break Dynamic Manifest Marker is reported within an event stream with the following schemeIdUri:
Check the dmm_data_not_ready property to find out whether actual ad break duration is known.
Example (unknown actual ad break duration):
The following sample data indicates that actual ad break duration has not yet been determined:
{ 'break_dur_req': 180.00, 'break_dur_act': -1, 'ad_dur': 10010.02, 'num_ads': 3, 'ad_slate': 0, 'dmm_data_not_ready': 1 }
Example (known actual ad break duration):
The following sample data indicates that actual ad break duration exceeded the requested ad break duration by 5.68 seconds:
{ 'break_dur_req': 180.00, 'break_dur_act': 185.68, 'ad_dur': 10010.02, 'num_ads': 3, 'ad_slate': 0, 'dmm_data_not_ready': 0 }
Define the plts query string parameter within the playback URL to seek to a specific position within the playlist. This seek position is measured from the start of the playlist in seconds.
Sample playback URL:
The following sample playback URL seeks 2 minutes from the start of the playlist:
Key information: