shaka-player
Version:
DASH/EME video player library
948 lines (912 loc) • 81.3 kB
JavaScript
// vim: foldmethod=marker:foldmarker={{{,}}}
/*! @license
* Shaka Player
* Copyright 2016 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @fileoverview
* @suppress {missingRequire}
*/
goog.require('ShakaDemoAssetInfo');
goog.provide('shakaAssets');
// Types and enums {{{
/**
* A container for demo assets.
* @class
*/
const shakaAssets = {};
/** @enum {string} */
shakaAssets.Source = {
CUSTOM: 'Custom',
SHAKA: 'Shaka',
AXINOM: 'Axinom',
UNIFIED_STREAMING: 'Unified Streaming',
DASH_IF: 'DASH-IF',
BITCODIN: 'Bitcodin',
METACDN: 'MetaCDN',
NIMBLE_STREAMER: 'Nimble Streamer',
AZURE_MEDIA_SERVICES: 'Azure Media Services',
GPAC: 'GPAC',
UPLYNK: 'Verizon Digital Media Services',
APPLE: 'Apple',
IRT: 'IRT',
MICROSOFT: 'Microsoft',
VNOVA: 'V-Nova',
AWS: 'AWS',
};
/** @enum {string} */
shakaAssets.KeySystem = {
CLEAR_KEY: 'Clear Key DRM',
FAIRPLAY: 'Fairplay DRM',
PLAYREADY: 'PlayReady DRM',
WIDEVINE: 'Widevine DRM',
AES128: 'AES-128 protection',
CLEAR: 'No DRM protection',
};
/** @enum {string} */
shakaAssets.AdTag = {
SINGLE_LINEAR_AD: 'https://pubads.g.doubleclick.net/gampad/ads?sz=640x480' +
'&iu=/124319096/external/' +
'single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&' +
'unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%' +
'3Dlinear&correlator=',
SINGLE_NON_LINEAR_AD: 'https://pubads.g.doubleclick.net/gampad/ads?' +
'sz=480x70&iu=/124319096/external/single_ad_samples&ciu_szs=300x250 ' +
'&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1' +
'&cust_params=deployment%3Ddevsite%26sample_ct%3Dnonlinear&correlator=',
SINGLE_SKIPPABLE_AD: 'https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/' +
'124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&' +
'gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=' +
'deployment%3Ddevsite%26sample_ct%3Dskippablelinear&correlator=',
AD_POD_PREROLL_MIDROLL_POSTROLL: 'https://pubads.g.doubleclick.net/gampad/ads?' +
'sz=640x480&iu=/124319096/external/ad_rule_samples&' +
'ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp&output=' +
'vmap&unviewed_position_start=1&cust_params=deployment%3Ddevsite' +
'%26sample_ar%3Dpremidpostpod&cmsid=496&vid=short_onecue&correlator=',
};
/**
* @param {!shakaAssets.KeySystem} keySystem
* @return {string}
*/
shakaAssets.identifierForKeySystem = (keySystem) => {
const KeySystem = shakaAssets.KeySystem;
switch (keySystem) {
case KeySystem.CLEAR_KEY: return 'org.w3.clearkey';
case KeySystem.FAIRPLAY: return 'com.apple.fps';
case KeySystem.PLAYREADY: return 'com.microsoft.playready';
case KeySystem.WIDEVINE: return 'com.widevine.alpha';
case KeySystem.AES128: return 'aes128';
default: return 'no drm protection';
}
};
/** @enum {string} */
shakaAssets.Feature = {
// Set if the asset has a special trick mode track, for rewinding effects.
TRICK_MODE: 'Special trick mode track',
XLINK: 'XLink',
// Set if the asset has any subtitle tracks.
SUBTITLES: 'Subtitles',
// Set if the asset has any closed caption tracks.
CAPTIONS: 'Captions',
// Set if the asset has multiple audio languages.
MULTIPLE_LANGUAGES: 'Multiple languages',
// Set if the asset is audio-only.
AUDIO_ONLY: 'Audio only',
// Set if the asset can be stored offline.
OFFLINE: 'Downloadable',
// A synthetic property used in the "all content" tab. Should not be given to
// assets.
STORED: 'Downloaded',
// Set if the asset has ads. Autoset by calling setAdTagUri() on an asset.
// Does not need to be set manually.
ADS: 'Ads',
// Set if the asset is a livestream.
LIVE: 'Live',
// A synthetic property used if the asset is VOD (not-livestream).
VOD: 'VOD',
// Set if the asset has at least one WebM stream.
WEBM: 'WebM',
// Set if the asset has at least one mp4 stream.
MP4: 'MP4',
// Set if the asset has at least one MPEG-2 TS stream.
MP2TS: 'MPEG-2 TS',
// Set if the asset has at least one containerless stream (AAC, etc).
CONTAINERLESS: 'Containerless',
// Set if the asset has at least one stream that is at least 720p.
HIGH_DEFINITION: 'High definition',
// Set if the asset has at least one stream that is at least 4k.
ULTRA_HIGH_DEFINITION: 'Ultra-high definition',
// Set if the asset has at least one stream that is surround sound.
SURROUND: 'Surround sound',
// Set if the asset is a MPEG-DASH manifest.
DASH: 'DASH',
// Set if the asset is an HLS manifest.
HLS: 'HLS',
// Set if the asset is an MSS manifest.
MSS: 'MSS',
// Set if the asset has at least one image stream.
THUMBNAILS: 'Thumbnails',
// Set if the asset has LCEVC.
LCEVC: 'LCEVC',
// Set if the asset has Low Latency mode.
LOW_LATENCY: 'Low Latency',
};
/**
* @typedef {{
* uri: string,
* language: string,
* kind: string,
* mime: string,
* codecs: (string|undefined)
* }}
*
* @property {string} uri
* The URI of the text.
* @property {string} language
* The language of the text (e.g. 'en').
* @property {string} kind
* The kind of text (e.g. 'subtitles').
* @property {string} mime
* The MIME type of the text (e.g. 'text/vtt')
* @property {(string|undefined)} codecs
* (optional) The codecs string, if needed to refine the MIME type.
*/
shakaAssets.ExtraText;
// End types and enums }}}
// Custom callbacks {{{
/**
* A prefix retrieved in a manifest response filter and used in a subsequent
* license request filter. Necessary for VDMS content.
*
* @type {string}
*/
shakaAssets.lastUplynkPrefix = '';
/**
* A response filter for VDMS Uplynk manifest responses.
* This allows us to get the license prefix that is necessary
* to later generate a proper license response.
*
* @param {shaka.net.NetworkingEngine.RequestType} type
* @param {shaka.extern.Response} response
*/
shakaAssets.UplynkResponseFilter = (type, response) => {
if (type == shaka.net.NetworkingEngine.RequestType.MANIFEST) {
// Parse a custom header that contains a value needed to build a proper
// license server URL.
if (response.headers['x-uplynk-prefix']) {
shakaAssets.lastUplynkPrefix = response.headers['x-uplynk-prefix'];
} else {
shakaAssets.lastUplynkPrefix = '';
}
}
};
/**
* A license request filter for VDMS Uplynk license requests.
*
* @param {shaka.net.NetworkingEngine.RequestType} type
* @param {shaka.extern.Request} request
*/
shakaAssets.UplynkRequestFilter = (type, request) => {
if (type == shaka.net.NetworkingEngine.RequestType.LICENSE) {
// Modify the license request URL based on our cookie.
if (request.uris[0].includes('wv') && shakaAssets.lastUplynkPrefix) {
request.uris[0] = shakaAssets.lastUplynkPrefix.concat('/wv');
} else if (request.uris[0].includes('ck') && shakaAssets.lastUplynkPrefix) {
request.uris[0] = shakaAssets.lastUplynkPrefix.concat('/ck');
} else if (request.uris[0].includes('pr') && shakaAssets.lastUplynkPrefix) {
request.uris[0] = shakaAssets.lastUplynkPrefix.concat('/pr');
}
}
};
// End custom callbacks }}}
/* eslint-disable max-len */
/** @const {!Array.<!ShakaDemoAssetInfo>} */
shakaAssets.testAssets = [
// Shaka assets {{{
new ShakaDemoAssetInfo(
/* name= */ 'Big Buck Bunny: the Dark Truths of a Video Dev Cartoon (DASH)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dark_truth.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/bbb-dark-truths/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Big Buck Bunny: the Dark Truths of a Video Dev Cartoon (HLS)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dark_truth.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/bbb-dark-truths-hls/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addDescription('A serious documentary about a problem plaguing video developers.')
.markAsFeatured('Big Buck Bunny: the Dark Truths')
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (multicodec, multilingual)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addDescription('A clip from a classic Star Trek TNG episode, presented in MPEG-DASH.')
.markAsFeatured('Angel One')
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (multicodec, multilingual, Widevine)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (multicodec, multilingual, ClearKey server)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-clearkey/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.CLEAR_KEY)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('org.w3.clearkey', 'https://cwip-shaka-proxy.appspot.com/clearkey?_u3wDe7erb7v8Lqt8A3QDQ=ABEiM0RVZneImaq7zN3u_w'),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (HLS, MP4, multilingual)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (HLS, MP4, video media playlist only)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/playlist_v-0480p-1000k-libx264.mp4.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.setMediaPlaylistFullMimeType('video/mp4; codecs="avc1.4d401f"'),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (HLS, MP4, multilingual, Widevine)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine-hls/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (HLS, MP4, multilingual, Widevine, single linear ad)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine-hls/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.setAdTagUri(shakaAssets.AdTag.SINGLE_LINEAR_AD)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Angel One (HLS, MP4, multilingual, Widevine, single non-linear ad)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine-hls/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.setAdTagUri(shakaAssets.AdTag.SINGLE_NON_LINEAR_AD)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel (HLS, TS, AES-128 key rotation)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-ts-aes-key-rotation/master.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.AES128)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP2TS)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel (HLS, FMP4, AES-128)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-fmp4-aes/master.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.AES128)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (multicodec)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel w/ trick mode (MP4 only, 720p)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-trickplay/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.TRICK_MODE)
.addFeature(shakaAssets.Feature.OFFLINE),
// NOTE: hanging in Firefox
// https://bugzilla.mozilla.org/show_bug.cgi?id=1291451
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (WebM only)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-webm-only/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (MP4 only)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-mp4-only/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (multicodec, Widevine)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-widevine/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth')
.setExtraConfig({
drm: {
advanced: {
'com.widevine.alpha': {
serverCertificateUri: 'https://cwip-shaka-proxy.appspot.com/service-cert',
},
},
},
}),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (multicodec, Widevine, ads)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-widevine/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addDescription('A Blender Foundation short film, protected by Widevine encryption ' +
' with pre-roll, mid-roll, and post-roll ads.')
.markAsFeatured('Sintel')
.setAdTagUri(shakaAssets.AdTag.AD_POD_PREROLL_MIDROLL_POSTROLL)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel 4k (MP4, VTT in MP4)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-mp4-wvtt/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Sintel w/ 44 subtitle languages',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-many-subs/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Heliocentrism (multicodec, multiperiod)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/heliocentricism.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/heliocentrism/heliocentrism.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Heliocentrism (multicodec, multiperiod, xlink)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/heliocentricism.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/heliocentrism-xlink/heliocentrism.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.XLINK)
.addFeature(shakaAssets.Feature.OFFLINE),
// From: http://dig.ccmixter.org/files/JeffSpeed68/53327
// Licensed under Creative Commons BY-NC 3.0.
// Free for non-commercial use with attribution.
// http://creativecommons.org/licenses/by-nc/3.0/
new ShakaDemoAssetInfo(
/* name= */ '"Dig the Uke" by Stefan Kartenberg (audio only, multicodec)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/audio_only.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/dig-the-uke-clear/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addDescription('An audio-only presentation performed by Stefan Kartenberg.')
.markAsFeatured('Dig the Uke')
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.AUDIO_ONLY)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
// From: http://dig.ccmixter.org/files/JeffSpeed68/53327
// Licensed under Creative Commons BY-NC 3.0.
// Free for non-commercial use with attribution.
// http://creativecommons.org/licenses/by-nc/3.0/
new ShakaDemoAssetInfo(
/* name= */ '"Dig the Uke" by Stefan Kartenberg (audio only, multicodec, Widevine)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/audio_only.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/dig-the-uke/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.AUDIO_ONLY)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (multicodec, TTML)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (HLS, Server Side ads)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/tos/hls.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.setIMAContentSourceId('2528370')
.setIMAVideoId('tears-of-steel')
.setIMAManifestType('HLS'),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (live, DASH, Server Side ads)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.LIVE)
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q')
.setIMAManifestType('DASH'),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (multicodec, surround + stereo)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (multicodec, surround + stereo, single skippable ad)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.setAdTagUri(shakaAssets.AdTag.SINGLE_SKIPPABLE_AD)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SURROUND)
.addFeature(shakaAssets.Feature.WEBM)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Shaka Player History (multicodec, live, DASH)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/shaka.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-live-assets/player-source.mpd',
/* source= */ shakaAssets.Source.SHAKA)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.WEBM),
new ShakaDemoAssetInfo(
/* name= */ 'Shaka Player History (live, HLS)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/shaka.png',
/* manifestUri= */ 'https://storage.googleapis.com/shaka-live-assets/player-source.m3u8',
/* source= */ shakaAssets.Source.SHAKA)
.addDescription('A self-indulgent HLS livestream.')
.markAsFeatured('Shaka Player History')
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4),
// End Shaka assets }}}
// Axinom assets {{{
// Src: https://github.com/Axinom/dash-test-vectors
new ShakaDemoAssetInfo(
/* name= */ 'Multi-DRM',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest.mpd',
/* source= */ shakaAssets.Source.AXINOM)
.addKeySystem(shakaAssets.KeySystem.PLAYREADY)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addLicenseServer('com.widevine.alpha', 'https://drm-widevine-licensing.axtest.net/AcquireLicense')
.addLicenseServer('com.microsoft.playready', 'https://drm-playready-licensing.axtest.net/AcquireLicense')
.addLicenseRequestHeader('X-AxDRM-Message', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImtleXMiOlt7ImlkIjoiOWViNDA1MGQtZTQ0Yi00ODAyLTkzMmUtMjdkNzUwODNlMjY2IiwiZW5jcnlwdGVkX2tleSI6ImxLM09qSExZVzI0Y3Iya3RSNzRmbnc9PSJ9XX19.4lWwW46k-oWcah8oN18LPj5OLS5ZU-_AQv7fe0JhNjA'),
new ShakaDemoAssetInfo(
/* name= */ 'Multi-DRM, multi-key',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://media.axprod.net/TestVectors/v7-MultiDRM-MultiKey/Manifest.mpd',
/* source= */ shakaAssets.Source.AXINOM)
.addKeySystem(shakaAssets.KeySystem.PLAYREADY)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addLicenseServer('com.widevine.alpha', 'https://drm-widevine-licensing.axtest.net/AcquireLicense')
.addLicenseServer('com.microsoft.playready', 'https://drm-playready-licensing.axtest.net/AcquireLicense')
.addLicenseRequestHeader('X-AxDRM-Message', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImtleXMiOlt7ImlkIjoiODAzOTliZjUtOGEyMS00MDE0LTgwNTMtZTI3ZTc0OGU5OGMwIiwiZW5jcnlwdGVkX2tleSI6ImxpTkpxVmFZa05oK01LY3hKRms3SWc9PSJ9LHsiaWQiOiI5MDk1M2UwOS02Y2IyLTQ5YTMtYTI2MC03YTVmZWZlYWQ0OTkiLCJlbmNyeXB0ZWRfa2V5Ijoia1l0SEh2cnJmQ01lVmRKNkxrYmtuZz09In0seyJpZCI6IjBlNGRhOTJiLWQwZTgtNGE2Ni04YzNmLWMyNWE5N2ViNjUzMiIsImVuY3J5cHRlZF9rZXkiOiI3dzdOWkhITE1nSjRtUUtFSzVMVE1RPT0ifSx7ImlkIjoiNTg1ZjIzM2YtMzA3Mi00NmYxLTlmYTQtNmRjMjJjNjZhMDE0IiwiZW5jcnlwdGVkX2tleSI6IkFjNFVVbVl0Qko1blBROU4xNXJjM2c9PSJ9LHsiaWQiOiI0MjIyYmQ3OC1iYzQ1LTQxYmYtYjYzZS02ZjgxNGRjMzkxZGYiLCJlbmNyeXB0ZWRfa2V5IjoiTzZGTzBmcVNXb3BwN2JqYy9ENGxNQT09In1dfX0.uF6YlKAREOmbniAeYiH070HSJhV0YS7zSKjlCtiDR5Y'),
new ShakaDemoAssetInfo(
/* name= */ 'Multi-DRM, multi-key, multi-Period',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://media.axprod.net/TestVectors/v7-MultiDRM-MultiKey-MultiPeriod/Manifest.mpd',
/* source= */ shakaAssets.Source.AXINOM)
.addKeySystem(shakaAssets.KeySystem.PLAYREADY)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addLicenseServer('com.widevine.alpha', 'https://drm-widevine-licensing.axtest.net/AcquireLicense')
.addLicenseServer('com.microsoft.playready', 'https://drm-playready-licensing.axtest.net/AcquireLicense')
.addLicenseRequestHeader('X-AxDRM-Message', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImtleXMiOlt7ImlkIjoiMDg3Mjc4NmUtZjllNy00NjVmLWEzYTItNGU1YjBlZjhmYTQ1IiwiZW5jcnlwdGVkX2tleSI6IlB3NitlRVlOY3ZqWWJmc2gzWDNmbWc9PSJ9LHsiaWQiOiJjMTRmMDcwOS1mMmI5LTQ0MjctOTE2Yi02MWI1MjU4NjUwNmEiLCJlbmNyeXB0ZWRfa2V5IjoiLzErZk5paDM4bXFSdjR5Y1l6bnQvdz09In0seyJpZCI6IjhiMDI5ZTUxLWQ1NmEtNDRiZC05MTBmLWQ0YjVmZDkwZmJhMiIsImVuY3J5cHRlZF9rZXkiOiJrcTBKdVpFanBGTjhzYVRtdDU2ME9nPT0ifSx7ImlkIjoiMmQ2ZTkzODctNjBjYS00MTQ1LWFlYzItYzQwODM3YjRiMDI2IiwiZW5jcnlwdGVkX2tleSI6IlRjUlFlQld4RW9IT0tIcmFkNFNlVlE9PSJ9LHsiaWQiOiJkZTAyZjA3Zi1hMDk4LTRlZTAtYjU1Ni05MDdjMGQxN2ZiYmMiLCJlbmNyeXB0ZWRfa2V5IjoicG9lbmNTN0dnbWVHRmVvSjZQRUFUUT09In0seyJpZCI6IjkxNGU2OWY0LTBhYjMtNDUzNC05ZTlmLTk4NTM2MTVlMjZmNiIsImVuY3J5cHRlZF9rZXkiOiJlaUkvTXNsbHJRNHdDbFJUL0xObUNBPT0ifSx7ImlkIjoiZGE0NDQ1YzItZGI1ZS00OGVmLWIwOTYtM2VmMzQ3YjE2YzdmIiwiZW5jcnlwdGVkX2tleSI6IjJ3K3pkdnFycERWM3hSMGJKeTR1Z3c9PSJ9LHsiaWQiOiIyOWYwNWU4Zi1hMWFlLTQ2ZTQtODBlOS0yMmRjZDQ0Y2Q3YTEiLCJlbmNyeXB0ZWRfa2V5IjoiL3hsU0hweHdxdTNnby9nbHBtU2dhUT09In0seyJpZCI6IjY5ZmU3MDc3LWRhZGQtNGI1NS05NmNkLWMzZWRiMzk5MTg1MyIsImVuY3J5cHRlZF9rZXkiOiJ6dTZpdXpOMnBzaTBaU3hRaUFUa1JRPT0ifV19fQ.BXr93Et1krYMVs-CUnf7F3ywJWFRtxYdkR7Qn4w3-to'),
new ShakaDemoAssetInfo(
/* name= */ 'Clear, single-Period',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://media.axprod.net/TestVectors/v7-Clear/Manifest.mpd',
/* source= */ shakaAssets.Source.AXINOM)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Clear, multi-Period',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://media.axprod.net/TestVectors/v7-Clear/Manifest_MultiPeriod.mpd',
/* source= */ shakaAssets.Source.AXINOM)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Clear, Live DASH',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/axinom_test.png',
/* manifestUri= */ 'https://akamai-axtest.akamaized.net/routes/lapd-v1-acceptance/www_c4/Manifest.mpd',
/* source= */ shakaAssets.Source.AXINOM)
// Disabled pending resolution of https://github.com/Axinom/public-test-vectors/issues/16
// Disabled pending resolution of https://github.com/Axinom/public-test-vectors/issues/17
.markAsDisabled()
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.DASH),
new ShakaDemoAssetInfo(
/* name= */ 'Clear, Live HLS',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/axinom_test.png',
/* manifestUri= */ 'https://akamai-axtest.akamaized.net/routes/lapd-v1-acceptance/www_c4/Manifest.m3u8',
/* source= */ shakaAssets.Source.AXINOM)
// Disabled pending resolution of https://github.com/Axinom/public-test-vectors/issues/17
.markAsDisabled()
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4),
// End Axinom assets }}}
// Unified Streaming assets {{{
// Src: http://demo.unified-streaming.com/features.html
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel.ism/.mpd',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (HLS, Subtitles)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-multiple-subtitles.ism/.m3u8',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (Widevine)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-dash-widevine.ism/.mpd',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addKeySystem(shakaAssets.KeySystem.WIDEVINE)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addLicenseServer('com.widevine.alpha', 'https://cwip-shaka-proxy.appspot.com/no_auth'),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (PlayReady)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-dash-playready.ism/.mpd',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addKeySystem(shakaAssets.KeySystem.PLAYREADY)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addLicenseServer('com.microsoft.playready', 'https://test.playready.microsoft.com/service/rightsmanager.asmx?PlayRight=1&UseSimpleNonPersistentLicense=1'),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (subtitles)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-en.ism/.mpd',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Tears of Steel (Thumbnails)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
/* manifestUri= */ 'https://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-tiled-thumbnails-timeline.ism/.mpd',
/* source= */ shakaAssets.Source.UNIFIED_STREAMING)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.OFFLINE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
// End Unified Streaming assets }}}
// DASH-IF assets {{{
// Src: http://dashif.org/test-vectors/
new ShakaDemoAssetInfo(
/* name= */ 'Big Buck Bunny (DASH-IF)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/big_buck_bunny.png',
/* manifestUri= */ 'https://dash.akamaized.net/dash264/TestCases/1c/qualcomm/2/MultiRate.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim (2s segments)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/utc_head/testpic_2s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.DASH),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim SegmentTimeline w/ $Time$ (6s segments)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/segtimeline_1/utc_head/testpic_6s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim SegmentTimeline w/ $Number$ (6s segments)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/segtimelinenr_1/utc_head/testpic_6s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim SegmentTimeline StartOver [-20s, +20s] (2s segments)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/segtimeline_1/startrel_-20/stoprel_20/timeoffset_0/testpic_2s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim StartOver SegTmpl Duration [-20s, +20s] (2s segments)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/startrel_-20/stoprel_20/timeoffset_0/testpic_2s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim SegTmpl Duration (multi-period 60s)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/utc_head/periods_60/testpic_2s/Manifest.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Live sim TTML Image Subtitles embedded (VoD)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/dash/testpic_2s/img_subs.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Low Latency DASH Live',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/chunkdur_1/ato_7/testpic4_8s/Manifest300.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.LOW_LATENCY)
.setExtraConfig({
streaming: {
lowLatencyMode: true,
},
}),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF CEA-608 VOD',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/dash/testpic_2s/cea608.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF CEA-608 Live',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/testpic_2s/cea608.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.SUBTITLES)
.addFeature(shakaAssets.Feature.MP4),
new ShakaDemoAssetInfo(
/* name= */ 'Akamai Low Latency DASH Live',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://akamaibroadcasteruseast.akamaized.net/cmaf/live/657078/akasource/out.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.LOW_LATENCY)
.setExtraConfig({
streaming: {
lowLatencyMode: true,
},
}),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF THUMBNAILS - Single adaptation set, 7 tiles at 10x1, each thumb 320x180',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_with_tiled_thumbnails.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF THUMBNAILS - Single adaptation set, 4 tiles at 10x1, each thumb 205x115',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_with_4_tiles_thumbnails.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF THUMBNAILS - Single adaptation set, 1 tile at 10x20, each thumb 102x58',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_with_tiled_thumbnails_2.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF THUMBNAILS - Two adaptation sets with different thumb resolutions',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_with_multiple_tiled_thumbnails.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
new ShakaDemoAssetInfo(
/* name= */ 'DASH-IF THUMBNAILS - Live stream, Single adaptation set, 1x1 tiles (livesim)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
/* manifestUri= */ 'https://livesim2.dashif.org/livesim2/testpic_2s/Manifest_thumbs.mpd',
/* source= */ shakaAssets.Source.DASH_IF)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.LIVE)
.addFeature(shakaAssets.Feature.THUMBNAILS),
// End DASH-IF Assets }}}
// bitcodin assets {{{
// Src: http://www.dash-player.com/demo/streaming-server-and-encoder-support/
// Src: https://bitmovin.com/mpeg-dash-hls-examples-sample-streams/
new ShakaDemoAssetInfo(
/* name= */ 'Art of Motion (DASH)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
/* manifestUri= */ 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd',
/* source= */ shakaAssets.Source.BITCODIN)
.addFeature(shakaAssets.Feature.DASH)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.MP4)
.addFeature(shakaAssets.Feature.OFFLINE),
new ShakaDemoAssetInfo(
/* name= */ 'Art of Motion (HLS, TS)',
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
/* manifestUri= */ 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8',
/* source= */ shakaAssets.Source.BITCODIN)
.addFeature(shakaAssets.Feature.HIGH_DEFINITION)
.addFeature(shakaAssets.Feature.HLS)
.addFeature(shakaAsset