Launch template settings
The launch template settings are defined in the settings block of the launch template file.
Through this settings block you can customize the application and edit particular areas to suit your workflow. In this document you can find all available launch template settings.
{
"data": [
...
],
"settings": [
{
"$ref": "https://example.com/remote/settings.json"
},
{
...
}
]
}
Asset Status
The asset status setting is used to customize the Asset status options. This feature is disabled by default but can be turned on by enabling features.assetStatus.
{
"assetStatus": {
"statusMetadataFieldName": "asset_status",
"statuses": [
{
"key": "in_progress",
"labels": {
"status": "In progress"
},
"color": "var(--AP-FOREGROUND-2)"
},
{
"key": "approved",
"labels": {
"status": "Approved",
"assign": "Approve"
},
"color": "var(--AP-SUCCESS)"
},
{
"key": "rejected",
"labels": {
"status": "Rejected",
"assign": "Reject"
},
"color": "var(--AP-ERROR)",
"form": "defaultAssetStatusCommentForm"
}
]
}
}
| Key | Required | Type | Description |
|---|---|---|---|
statusMetadataFieldName | Yes | string | The name of the metadata field to store the asset status. |
statuses | Yes | object | List of available Asset Status Option. |
Asset Status Option
| Key | Required | Type | Description |
|---|---|---|---|
key | Yes | string | The value to store in the asset metadata |
labels.status | Yes | string | Label to use when this status has been set. |
labels.assign | No | string | Label to use in confirm button when setting this status. |
color | No | string | Custom color for this status used in the drop down. |
form | No | string | Use to display a custom form when this status is selected. |
revokable | No | boolean | If this is set to false, it is not possible to change to a different status after setting this status. E.g. preventing a rejected asset from becoming approved. |
hidden | No | boolean | Hides the asset status from the drop down list where a user sets the status. Useful for states that should only be settable by an external system. |
Features
Feature flags, used to enable/disable optional features.
{
"features": {
"assetStatus": true
}
}
| Key | Required | Type | Description |
|---|---|---|---|
assetStatus | No | boolean | Turn on the Asset Status feature |
Forms
The forms setting is used to define custom forms that can be used for marker-, asset- or file metadata.
{
"forms": {
"defaultMarker": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": ["name"]
},
"uischema": {
"type": "VerticalLayout",
"elements": [
{
"type": "Control",
"label": "Name",
"scope": "#/properties/name"
},
{
"type": "Control",
"label": "Description (optional)",
"scope": "#/properties/description",
"options": {
"format": "textarea"
}
}
]
},
"defaultValues": {
"description": ""
}
}
}
}
schema: The schema for the form, see json-schema.uischema: The UI Schema for the form, see ui-schema.defaultValues: Any default values the form should be initialized with.
This document covers the currently supported UI Schema formats and explains how to configure them.
Form references
A schema can reference another schema using the $ref keyword. The value of $ref is a URI-reference that is resolved when the form is loaded for the first time. It is possible, for example, to reference a complete form at a remote location or a sub-schema at a remote location, reference properties within the same schema or use AV specific references, see How to use form references.
Marker forms
These are the default forms used for markers:
| Key | Form description |
|---|---|
defaultMarker | Default marker form |
adBreakStartForm | Default form for ad-break start |
adBreakEndForm | Default form for ad-break end |
adBreakBreakForm | Default form for ad-breaks |
cutForm | Default form for cuts (ad-breaks) |
You can override these or specify new forms under different keys and use those by setting the form key in the marker track settings, see How to define and use custom forms.
Asset- and file metadata forms (metadata tab forms)
These are the default forms used in the metadata tab:
| Key | Form description |
|---|---|
defaultAsset | Default asset form |
defaultVideo | Default video form |
defaultAudio | Default audio form |
defaultSubtitle | Default subtitle form |
You can override these or specify new forms under different keys and use those by setting the form key in the Metadata Views settings
Metadata views
This setting is used to configure the metadata that is shown in the metadata tab.
{
"metadataViews": [
{
"id": "defaultMetadataView",
"name": "Default",
"active": true,
"description": "The default metadata view",
"fieldSets": {
"asset": {
"form": "assetMetadataForm",
"formFields": [
{
"metadataFieldId": "#asset/properties/title",
"expectedMetadataFieldId": "assetMetadataTitleExpected",
"order": 20
}
],
"readOnlyFields": [
{
"metadataFieldId": "created"
}
]
}
}
}
]
}
| Key | Required | Type | Description |
|---|---|---|---|
id | Yes | string | A unique id for the metadata view. |
name | Yes | string | The name of the metadata view. |
active | Yes | boolean | Marks the view as active, the first active view found will be used. At least one view needs to be active. |
fieldSets | Yes | object | Fields and form configurations for the different field sets in the metadata tab. |
description | No | string | Text describing the metadata view. |
Field set
A field set contains configurations for the available field set types. For most field set types it is possible to configure the form, formFields and readOnlyFields. However, for the field set types container, videoStream and audioStream it is only possible to configure readOnlyFields.
| Key | Required | Type | Description |
|---|---|---|---|
form | No | string | States which form to use for the field set metadata. |
formFields | No | object | Configuration for fields generated based on the form. A list of MetadataViewFields. The id of the field to configure have to be the auto-generated id. |
readOnlyFields | No | object | Read-only fields for the fieldset. A list of MetadataViewFields. |
Field set types
These are the available field set types:
| Key | Configurable fields |
|---|---|
asset | form, formFields, readOnlyFields |
videoFile | form, formFields, readOnlyFields |
audioFile | form, formFields, readOnlyFields |
subtitleFile | form, formFields, readOnlyFields |
container | readOnlyFields |
videoStream | readOnlyFields |
audioStream | readOnlyFields |
Metadata fields
These settings are used to configure which metadata fields exist on an asset, file, media container and its video- and audio streams. Metadata fields can be used to configure a metadata view that is shown in the Metadata tab in Validate.
{
"metadataFields": [
{
"id": "title",
"key": "title",
"label": "Title"
},
{
"id": "duration",
"key": "duration",
"label": "Duration",
"source": "properties",
"displayType": "smpte",
"storedType": "timebase"
},
{
"id": "sampleRate",
"key": "sampleRate",
"label": "Sample Rate",
"source": "properties"
},
{
"id": "channels",
"key": "channels",
"label": "Channels",
"source": "properties",
"expectedMetadata": [
{
"id": "expectedChannels",
"key": "expected-channels",
"source": "assetMetadata",
"comparison": {
"key": "expected-channels-result"
}
}
]
},
{
"id": "#asset/properties/deliveryDate",
"key": "deliveryDate",
"displayType": "date",
"storedType": "utcDate"
}
]
}
| Key | Required | Type | Alternatives | Default | Description |
|---|---|---|---|---|---|
id | Yes | string | Unique id for this metadata field. Required to reference this field from a metadata-view. | ||
key | Yes | string | Metadata key holding the value. | ||
label | yes | string | Label that will be shown for this metadata-field when used in metadata-view. | ||
source | No | string | metadata, properties | metadata | Source limiting where to look for metadata key. Technical metadata like codec or bitrate of a media file are usually properties, and metadata is used for user defined metadata. |
description | No | string | Text describing the metadata field. | ||
displayType | No | string | smpte, date, time,date-time | Decides in which format the metadata value should be presented in the UI. If not specified the metadata value will be displayed as it is with no conversion of any kind. | |
storedType | No | string | timebase,utcDate | Which data type the value is stored as. | |
expectedMetadata | No | object | see Expected metadata. |
Auto-generated fields
Properties defined in forms automatically generate metadata fields. These fields can be overridden by defining a field with
the same id as the auto-generated one. The id follows the pattern: #{fieldSet}/properties/${propertyName} (see for example fieldSet.asset.form in Metadata Views).
Expected metadata
An additional field describing the value that is expected for the metadata field. It also includes a comparison property with information about the comparison between the metadata field and the expected metadata.
{
"expectedMetadata": [
{
"id": "expectedChannels",
"key": "expected-channels",
"source": "assetMetadata",
"comparison": {
"source": "assetMetadata",
"key": "expected-channels-result"
}
}
]
}
| Key | Required | Type | Alternatives | Description |
|---|---|---|---|---|
id | Yes | string | Unique id for the metadata field. Required to reference the metadata field from a metadata-view. | |
key | Yes | string | Metadata key holding the value. | |
comparison | Yes | object | see Expected metadata comparison. | |
source | No | string | metadata, properties, assetMetadata, assetProperties, relativeAssetMetadata, relativeAssetProperties | Default source of the metadata field limiting where to look for metadata key. |
Expected metadata comparison
Property that contains information about the comparison between the metadata field and Expected metadata property.
The pre-computed result from the comparison can be found using the key value. The value must be interpretable as a boolean, for example "yes", true, 1, "FALSE", null.
{
"comparison": {
"key": "expected-channels-result",
"source": "assetMetadata"
}
}
| Key | Required | Type | Alternatives | Description |
|---|---|---|---|---|
key | Yes | string | The metadata key holding the value. | |
source | No | string | metadata, properties, assetMetadata, assetProperties, relativeAssetMetadata, relativeAssetProperties. | The default expectedMetadata.source or the source of the metadata field, limiting where to look for metadata key. |
Metadata view field
Describes which metadata-fields that should be included in the metadataView.
| Key | Required | Type | Description |
|---|---|---|---|
metadataFieldId | Yes | string | A reference to an existing metadata field to use as base. |
label | No | string | Overrides the label in the referenced metadata field. |
expectedMetadataFieldId | No | string | States which expectedMetadata id that should be used from the referenced metadata-field. |
order | No | number | Controls the display order of the fields. The fields are sorted in ascending order. |
Marker table definitions
This property describes what contents to display in the marker table and how to display it.
{
"markerTableDefinitions": [
{
"id": "name",
"label": "Name",
"enabled": true,
"scope": "#/metadata/name",
"format": "STRING"
},
{
"id": "start",
"label": "Start",
"enabled": true,
"scope": "#/start",
"format": "TIMECODE"
},
{
"id": "advanced",
"label": "Advanced",
"enabled": true,
"scope": [
"#/metadata/name",
"#/metadata/ad_break_type"
],
"format": "STRING"
}
]
}
| Key | Required | Type | Alternatives | Description |
|---|---|---|---|---|
id | Yes | string | Id for this column | |
label | Yes | string | Display label for the column in the marker table. | |
enabled | Yes | boolean | Controls the default visibility of the column. This is the initial visibility state, but column visibility can also be toggled from within the application by the users. | |
scope | Yes | string | string[] | "#/start", "#/end", "#/duration", "#/group", "#/track", "#/metadata/*" | A path or array of paths that point to some data in the marker to display. Read more in the scope section below. |
format | Yes | string | "STRING", "DATE", "TIME", "DATETIME", "ARRAY", "STRING", "INTEGER", "DECIMAL", "BOOLEAN", "TIMECODE" and "DURATION" | How the data in the column should be formatted. |
valueMapper | No | object | Takes a map for remapping one value to another. Read more in the valueMapper section below. |
scope
The scope property is a path (or array of paths) that specifies how to extract the data from a marker.
The following scopes are always available in a marker
"#/start""#/end""#/duration""#/group""#/track"
You can also target marker metadata entries. E.g. the scope "#/metadata/exampleField" would target the marker metadata entry having the key exampleField
If you provide an array of multiple scopes, then the first scope that leads to a match will be used.
valueMapper
The value mapper enables simple string substitution before the data is presented in the marker table. Consider an example where the markers have a metadata field status that indicates some kind of status using integers.
We can use the value mapper to make this information easier for the user to understand.
{
"id": "status",
"label": "Approval status",
"enabled": true,
"scope": "#/metadata/status",
"format": "STRING",
"valueMapper": {
"0": "No status",
"1": "In progress",
"2": "Approved",
"3": "Rejected"
}
}
This gives us a table with an Approval status column showing e.g. In progress instead of just 1.
Preferred video tags
The preferredVideoTags setting allows you to control what video proxy to enable by default if you load more than one video file.
{
"preferredVideoTags": ["mp4", "mp4-lowres", "lowres"]
}
In the example above a video with the tag (metadata entry with key tag) "mp4" is preferred over "mp4-lowres" witch in turn is preferred over "lowres".
Safe areas
The safeAreas setting defines the safe areas that should be available in the application.
{
"safeAreas": [
{
"name": "16:9 Safe area",
"url": "https://example.com/16-9.png",
"aspectRatio": "16:9"
},
...
]
}
| Key | Required | Type | Description |
|---|---|---|---|
name | Yes | string | The name of the safe area to be shown in the validate application. |
url | Yes | string | URL to the safe area image file. |
aspectRatio | Yes | string | Aspect ratio of the image. |
Track labels
You can customize how labels for video, audio and subtitle tracks are displayed by specifying a template string for each file type. The template values will be replaced with the actual properties and metadata of the file.
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
videoFileDisplay | %filename (%tag, %id) | No | string | Possible template values: %filename, %id, %tag, %asset, %language or %metadata:{key}, i.e. %metadata:label |
audioFileDisplay | %filename (%tag, %id, %channels channels) | No | string | Possible template values: %filename, %id, %tag, %language, %asset, %channels or %metadata:{key}, i.e. %metadata:label |
subtitleFileDisplay | %filename (%tag, %id, %language) | No | string | Possible template values: %filename, %id, %tag, %asset, %language or %metadata:{key}, i.e. %metadata:label |
Track order
You can customize the order video, audio and subtitles files are displayed by specifying what properties or metadata to sort on for each file type. The files are first ordered by the first value in the list, then by the second and so on. With no ordering specified the files will be displayed in the order they are defined in the launch template.
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
videoFileOrder | [] | No | array | Alternatives are: tag, filename, language, id or metadata:{key}, i.e. ${metadata:label} |
audioFileOrder | [] | No | array | Alternatives are: tag, filename, language, id, channels or metadata:{key}, i.e. ${metadata:label} |
subtitleFileOrder | ["id"] | No | array | Alternatives are: tag, filename, language, id or metadata:{key}, i.e. ${metadata:label} |
Track Extraction
This feature is only available in Validate. Read the how-to guide to get started.
This feature enables playback of multiple muxed audio- and subtitle tracks in video proxy files. By default, the browser does not allow playback of more than one muxed audio track, and none of the muxed subtitle tracks.
{
"trackExtraction": {
"extractAudio": true,
"extractSubtitles": true,
"trackExtractorOptions": {
...
}
}
}
| Key | Required | Type | Description |
|---|---|---|---|
extractAudio | No | boolean | Enable track extraction for muxed audio tracks |
extractSubtitles | No | boolean | Enable track extraction for muxed subtitle tracks |
trackExtractorOptions | No | object | Track extraction fine tuning options, see TrackExtractorOptions |
Known limitations
- This feature is specifically targeting the MP4 file format (.mp4) as defined by MPEG-4 Part 14
- QuickTime file format (.mov) may work in some cases, as long as the codecs are supported (see below). We recommend that you try it out to verify.
- The video- and audio codec support is limited to what the Media Source Extensions API supports. That in turn is dependent on what the browser vendors have implemented.
- Usage of H.264 video codec, and AAC audio codec is a common baseline that most browser vendors support.
- To know if your media can be played with this feature, we recommend that you try it out and see for yourself as it is so dependent on browser support.
- The supported subtitle track formats are:
- WebVTT (
wvtt) - MPEG-4 Timed Text (
tx3g) - Simple text (
mett,sbtt,stxt) - TTML/IMSC (
metx,stpp) - SCC (
c608,c708)
Audio Playback Options
{
"disableMuxedAudio": false,
"disableFirstTrackAutoEnable": false
}
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
disableMuxedAudio | false | No | boolean | When true, it disables playback of muxed audio tracks in video files |
disableFirstTrackAutoEnable | false | No | boolean | When true, it prevents the first audio track from being automatically enabled on player load. No discrete audio is automatically enabled if no muxed audio is available or disableMuxedAudio is set to true |
Read the how-to guide for examples of how to use these settings!
Audio Channels
{
"maxOutputChannelCount": 2
}
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
maxOutputChannelCount | 2 | No | number | Limits the audio output channels by downmuxing to the given value. Use a higher value (e.g., 6 for 5.1 or 8 for 7.1) for multi-channel output. Output is limited by the maximum channel count your hardware reports to the browser |
Subtitle Settings
{
"subtitleStartTimeFallback": ["scc", "stl", "timespan", "pac"]
}
| Key | Type | Default | Alternatives | Description |
|---|---|---|---|---|
subtitleStartTimeFallback | string[] | ["scc", "stl", "timespan", "pac"] | "vtt", "scc", "srt", "stl", "imsc", "itt", "cap", "pac","timespan" | Lists subtitle formats which should inherit the video’s start time when the subtitle file does not provide an explicit start time of its own. |
Files and Tabs
{
"excludeTabs": ["metadata", "audio"],
"filesTabAllowedFileTypes": ["VIDEO", "AUDIO"]
}
| Key | Type | Default | Alternatives | Description |
|---|---|---|---|---|
excludeTabs | string[] | ["files"] | "metadata", "audio", "media", "markers", "files", "program", "phase" | Tabs listed here will be hidden in the Validate UI. |
filesTabAllowedFileTypes | string[] | ["VIDEO", "SUBTITLE", "BATON"] | "VIDEO", "AUDIO", "SUBTITLE", "BATON", "STILL_FRAME", "SPRITE_MAP", "MANIFEST", "MARKER", "WAVEFORM", "MISC" | List of FileType identifiers to display in the Files tab. Files matching any of these types will be shown. |
Read the how-to guide for examples of how to customize files and tabs!
JIT
JIT (or Just-In-Time) playback requires a separate JIT backend to be available.
{
"jit": {
"iceServers": [
{
"urls": "stun.l.google.com:19302"
}
],
"backendUrl": "https://example.com",
"enabled": "determinedByFile"
}
}
| Key | Required | Type | Alternatives | Description |
|---|---|---|---|---|
iceServers | Yes | object | An array of objects, each describing one server which may be used by the ICE agent; these are typically STUN and/or TURN servers. See RTCIceServers | |
backendUrl | Yes | string | Url to the JIT backend | |
enabled | No | string | never, always, determinedByFile, determinedByTag | Controls if and when JIT should be used |
Enable for specific files
With enabled set to determinedByFile it is possible to let the file determine if it should be loaded through JIT or with a regular player.
JIT will be used if the file contains the metadata entry:
{
"key": "jit",
"value": "true"
}
With enabled set to determinedByTag it is possible to specify metadata tags to determine if a file should be loaded through JIT or with a regular player.
Use the enabledTags in the jit configuration to specify tags. If enabled has any other value than determinedByTag enabledTags will have no effect.
{
"jit": {
...
"enabled": "determinedByTag",
"enabledTags": [ "original" ]
}
}
With the determinedByTag configuration above JIT will be used if the file contains the metadata entry:
{
"key": "tag",
"value": "original"
}
ABR files like hls or dash are not supported in JIT.
Digital Rights Management (DRM)
The DRM settings defines the settings needed to load DRM protected content.
{
"drm": {
"servers": {
"com.widevine.alpha": "https://wv-keyos.licensekeyserver.com/"
},
"licenseHeaders": {
"customdata": "PEtleU9TQXV0aGVudGljYXRpb25YTUw+"
}
}
}
| Key | Required | Type | Description |
|---|---|---|---|
servers | No | object | The URLS(s) of the license server(s) |
licenseHeaders | No | object | Custom headers to add to license request(s) |
License Headers
If the license server requires custom headers to be set when requesting media, licenseHeaders can be used.
{
"licenseHeaders": {
"customdata": "PEtleU9TQXV0aGVudGljYXRpb25YTUw+"
}
}
In the example above the header customdata with the value PEtleU9TQXV0aGVudGljYXRpb25YTUw+ is set for every license request.
You can read more about how the shaka player handles this on this link.
Languages
Languages defined in the settings block under the languages key are used in language pickers for audio tracks, subtitles etc.
If no languages are defined in the settings block languages based on the ISO 639-1 codes will be used as a default. Languages provided in the settings block take precedence over the default languages.
{
"languages": [
{
"code": "en",
"label": "English"
}
]
}
Session retention
The retention of a session can be configured using the retention key.
{
"retention": "P2W"
}
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
retention | "P2W" | No | string | Sets the retention of the created session. Specified using ISO 8601 durations format. After the duration have expired since the session was created, the session will be deleted the next time Accurate.Video gets loaded into the browser. |
Timeline settings
Settings for the timeline.
{
"timeline": {
"disableThumbnailHover": true
}
}
| Key | Default | Required | Type | Description |
|---|---|---|---|---|
disableThumbnailHover | false | No | boolean | Disable loading and display of thumbnails when hovering timecodes in the timeline. |