Difference between revisions of "Extended Properties"
(83 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | These properties can be used for special use cases and are only valid for version '''0.1. | + | These properties can be used for special use cases and are only valid for version '''0.1.58+'''. Each property is a key-value pair of type <code>string</code> and can be set in the <code>properties</code> property of a [[Content Item Object]]. The dynamic properties can also be set via an action at runtime. For more information, please see [[Internal Actions]]. |
− | == | + | '''Note: It is also possible to set values of type <code>boolean</code> or <code>number</code> as non-<code>string</code> values (e.g. <code>"true"</code> → <code>true</code> or <code>"123"</code> → <code>123</code>).''' |
+ | |||
+ | == Syntax == | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|+ Property syntax of extended properties | |+ Property syntax of extended properties | ||
|- | |- | ||
− | ! Property !! Value !! Example !! Dynamic !! class="unsortable" | Description | + | ! Property !! Value !! Example !! Dynamic !! Since Version !! class="unsortable" | Description |
+ | |- | ||
+ | | <code>button:{BUTTON_ID}:action</code> || <code>{ACTION}</code> || | ||
+ | <code>"button:content:action": "info:Custom content action executed."</code><br/> | ||
+ | <code>"button:restart:action": "info:Custom restart action executed."</code><br/> | ||
+ | <code>"button:prev:action": "info:Custom prev action executed."</code><br/> | ||
+ | <code>"button:rewind:action": "info:Custom rewind action executed."</code><br/> | ||
+ | <code>"button:play_pause:action": "info:Custom play/pause action executed."</code><br/> | ||
+ | <code>"button:forward:action": "info:Custom forward action executed."</code><br/> | ||
+ | <code>"button:next:action": "info:Custom next action executed."</code><br/> | ||
+ | <code>"button:speed:action": "info:Custom speed action executed."</code><br/> | ||
+ | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
+ | Sets up a custom player button action (all buttons except the eject button are supported). By default, the following actions are executed. | ||
+ | |||
+ | * <code>content</code>: <code>player:content</code> | ||
+ | * <code>restart</code>: <code>player:restart</code> | ||
+ | * <code>prev</code>: <code>player:prev</code> | ||
+ | * <code>rewind</code>: <code>player:rewind</code> | ||
+ | * <code>play_pause</code>: <code>player:play_pause</code> | ||
+ | * <code>forward</code>: <code>player:forward</code> | ||
+ | * <code>next</code>: <code>player:next</code> | ||
+ | * <code>speed</code>: <code>player:speed</code> | ||
+ | |||
+ | '''Note: To use this property, the corresponding <code>button:{BUTTON_ID}:icon</code> property must also be set, otherwise this property is ignored. If you set the action to <code>"default"</code>, the default action is used. For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
+ | |- | ||
+ | | <code>button:{BUTTON_ID}:display</code> || <code>{BOOLEAN_VALUE}</code> || | ||
+ | <code>"button:content:display": "true"</code><br/> | ||
+ | <code>"button:restart:display": "true"</code><br/> | ||
+ | <code>"button:prev:display": "true"</code><br/> | ||
+ | <code>"button:rewind:display": "true"</code><br/> | ||
+ | <code>"button:play_pause:display": "true"</code><br/> | ||
+ | <code>"button:forward:display": "true"</code><br/> | ||
+ | <code>"button:next:display": "true"</code><br/> | ||
+ | <code>"button:speed:display": "true"</code><br/> | ||
+ | || No || data-sort-value=130|'''0.1.130''' || | ||
+ | Shows/Hides a player button (all buttons except the eject button are supported). | ||
|- | |- | ||
| <code>button:{BUTTON_ID}:enable</code> || <code>{BOOLEAN_VALUE}</code> || | | <code>button:{BUTTON_ID}:enable</code> || <code>{BOOLEAN_VALUE}</code> || | ||
− | <code>"button:content:enable":"true"</code><br/> | + | <code>"button:content:enable": "true"</code><br/> |
− | <code>"button:restart:enable":"true"</code><br/> | + | <code>"button:restart:enable": "true"</code><br/> |
− | <code>"button:prev:enable":"true"</code><br/> | + | <code>"button:prev:enable": "true"</code><br/> |
− | <code>"button:rewind:enable":"true"</code><br/> | + | <code>"button:rewind:enable": "true"</code><br/> |
− | <code>"button:play_pause:enable":"true"</code><br/> | + | <code>"button:play_pause:enable": "true"</code><br/> |
− | <code>"button:forward:enable":"true"</code><br/> | + | <code>"button:forward:enable": "true"</code><br/> |
− | <code>"button:next:enable": true"</code><br/> | + | <code>"button:next:enable": "true"</code><br/> |
− | <code>"button:speed:enable":"true"</code><br/> | + | <code>"button:speed:enable": "true"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Enables/Disables a player button (all buttons except the eject button are supported). | Enables/Disables a player button (all buttons except the eject button are supported). | ||
|- | |- | ||
| <code>button:{BUTTON_ID}:focus</code> || <code>{BOOLEAN_VALUE}</code> || | | <code>button:{BUTTON_ID}:focus</code> || <code>{BOOLEAN_VALUE}</code> || | ||
− | <code>"button:content:focus":"true"</code><br/> | + | <code>"button:content:focus": "true"</code><br/> |
− | <code>"button:restart:focus":"true"</code><br/> | + | <code>"button:restart:focus": "true"</code><br/> |
− | <code>"button:prev:focus":"true"</code><br/> | + | <code>"button:prev:focus": "true"</code><br/> |
− | <code>"button:rewind:focus":"true"</code><br/> | + | <code>"button:rewind:focus": "true"</code><br/> |
− | <code>"button:play_pause:focus":"true"</code><br/> | + | <code>"button:play_pause:focus": "true"</code><br/> |
− | <code>"button:forward:focus":"true"</code><br/> | + | <code>"button:forward:focus": "true"</code><br/> |
<code>"button:next:focus": "true"</code><br/> | <code>"button:next:focus": "true"</code><br/> | ||
− | <code>"button:speed:focus":"true"</code><br/> | + | <code>"button:speed:focus": "true"</code><br/> |
− | <code>"button:eject:focus":"true"</code><br/> | + | <code>"button:eject:focus": "true"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Focuses a player button (if player is loaded). | Focuses a player button (if player is loaded). | ||
|- | |- | ||
− | | <code>button:content:action</code> || <code>{ | + | | <code>button:{BUTTON_ID}:icon</code> || <code>{ICON}</code> || |
− | <code>"button:content:action":"info:Custom | + | <code>"button:content:icon": "pageview"</code><br/> |
− | || No || | + | <code>"button:restart:icon": "replay"</code><br/> |
− | Sets up a custom | + | <code>"button:prev:icon": "skip-previous"</code><br/> |
+ | <code>"button:rewind:icon": "fast-rewind"</code><br/> | ||
+ | <code>"button:play_pause:icon": "play-arrow{{pipe}}pause"</code><br/> | ||
+ | <code>"button:forward:icon": "fast-forward"</code><br/> | ||
+ | <code>"button:next:icon": "skip-next"</code><br/> | ||
+ | <code>"button:speed:icon": "slow-motion-video"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
+ | Sets up a custom player button icon (all buttons except the eject button are supported). By default, the following icons are used. | ||
+ | |||
+ | * <code>content</code>: <code>pageview</code> <big>{{icon|pageview}}</big> | ||
+ | * <code>restart</code>: <code>replay</code> <big>{{icon|replay}}</big> | ||
+ | * <code>prev</code>: <code>skip-previous</code> <big>{{icon|skip-previous}}</big> | ||
+ | * <code>rewind</code>: <code>fast-rewind</code> <big>{{icon|fast-rewind}}</big> | ||
+ | * <code>play_pause</code>: <code>play-arrow</code>{{pipe}}<code>pause</code> <big>{{icon|play-arrow}}</big>{{pipe}}<big>{{icon|pause}}</big> | ||
+ | * <code>forward</code>: <code>fast-forward</code> <big>{{icon|fast-forward}}</big> | ||
+ | * <code>next</code>: <code>skip-next</code> <big>{{icon|skip-next}}</big> | ||
+ | * <code>speed</code>: <code>slow-motion-video</code> <big>{{icon|slow-motion-video}}</big> | ||
+ | |||
+ | '''Note: To use this property, the corresponding <code>button:{BUTTON_ID}:action</code> property must also be set, otherwise this property is ignored. If you set the icon to <code>"default"</code>, the default icon is used. For the <code>play_pause</code> button, you can also set two icons by using the separator <code>{{pipe}}</code> (e.g. <code>"play-arrow{{pipe}}pause"</code>).''' | ||
+ | |- | ||
+ | | <code>button:{BUTTON_ID}:key</code> || <code>{KEY}</code> || | ||
+ | <code>"button:content:key": "1"</code><br/> | ||
+ | <code>"button:restart:key": "2"</code><br/> | ||
+ | <code>"button:prev:key": "3"</code><br/> | ||
+ | <code>"button:rewind:key": "4"</code><br/> | ||
+ | <code>"button:play_pause:key": "5"</code><br/> | ||
+ | <code>"button:forward:key": "6"</code><br/> | ||
+ | <code>"button:next:key": "7"</code><br/> | ||
+ | <code>"button:speed:key": "8"</code><br/> | ||
+ | <code>"button:eject:key": "9"</code><br/> | ||
+ | || No || data-sort-value=132|'''0.1.132''' || | ||
+ | Sets up a player button shortcut key. | ||
+ | |- | ||
+ | | <code>control:action</code> || <code>{ACTION}</code> || | ||
+ | <code>"control:action": "info:Custom player control action executed."</code><br/> | ||
+ | || No || data-sort-value=140|'''0.1.140''' || | ||
+ | Sets up a custom player control action (replacement for the action that is executed if the OK key is pressed while the video/audio is in foreground). By default, the action <code>player:show:execute</code> is executed. | ||
− | '''Note: | + | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' |
|- | |- | ||
| <code>control:load</code> || <code>{LOAD_MODE}</code> || | | <code>control:load</code> || <code>{LOAD_MODE}</code> || | ||
− | <code>"control:load":"default"</code><br/> | + | <code>"control:load": "default"</code><br/> |
− | <code>"control:load":"silent"</code><br/> | + | <code>"control:load": "silent"</code><br/> |
− | || No || | + | || No || data-sort-value=111|'''0.1.111''' || |
Sets up the player control load mode. If the mode is set to <code>"silent"</code>, the player is not shown if the video/audio file is loaded in auto mode (e.g. if the action <code>player:auto:next</code> is executed). | Sets up the player control load mode. If the mode is set to <code>"silent"</code>, the player is not shown if the video/audio file is loaded in auto mode (e.g. if the action <code>player:auto:next</code> is executed). | ||
+ | |- | ||
+ | | <code>control:return</code> || <code>{RETURN_MODE}</code> || | ||
+ | <code>"control:return": "default"</code><br/> | ||
+ | <code>"control:return": "silent"</code><br/> | ||
+ | || No || data-sort-value=140|'''0.1.140''' || | ||
+ | Sets up the player control return mode. If the mode is set to <code>"silent"</code>, the player is not shown if returning from a content page. | ||
+ | |- | ||
+ | | <code>control:type</code> || <code>{CONTROL_TYPE}</code> || | ||
+ | <code>"control:type": "default"</code><br/> | ||
+ | <code>"control:type": "extended"</code><br/> | ||
+ | || No || data-sort-value=130|'''0.1.130''' || | ||
+ | Sets up the player control type. If the type is set to <code>"extended"</code>, the player is displayed in fullscreen mode, it will not disappear in pause mode, and it is possible to use the <code>info:text</code> and <code>info:image</code> properties. | ||
|- | |- | ||
| <code>image:action</code> || <code>{ACTION}</code> || | | <code>image:action</code> || <code>{ACTION}</code> || | ||
− | <code>"image:action":"info:Custom image action executed."</code><br/> | + | <code>"image:action": "info:Custom image action executed."</code><br/> |
− | || No || | + | || No || data-sort-value=111|'''0.1.111''' || |
Sets up a custom slideshow image action (replacement for the default slideshow image action). By default, the action <code>slider:labels:play_pause</code> is executed. | Sets up a custom slideshow image action (replacement for the default slideshow image action). By default, the action <code>slider:labels:play_pause</code> is executed. | ||
Line 53: | Line 138: | ||
|- | |- | ||
| <code>image:extension</code> || <code>{LABEL}</code> || | | <code>image:extension</code> || <code>{LABEL}</code> || | ||
− | <code>"image:extension":"Custom image extension label"</code><br/> | + | <code>"image:extension": "Custom image extension label"</code><br/> |
− | || No || | + | || No || data-sort-value=111|'''0.1.111''' || |
Sets up an additional slideshow image extension label (displayed in the slideshow labels). | Sets up an additional slideshow image extension label (displayed in the slideshow labels). | ||
+ | This property supports [[Inline Expressions]]. | ||
|- | |- | ||
| <code>image:trigger</code> || <code>{ACTION}</code> || | | <code>image:trigger</code> || <code>{ACTION}</code> || | ||
− | <code>"image:trigger":"info:Image is visible."</code><br/> | + | <code>"image:trigger": "info:Image is visible."</code><br/> |
− | || No || | + | || No || data-sort-value=111|'''0.1.111''' || |
Sets up a slideshow image trigger. | Sets up a slideshow image trigger. | ||
'''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
+ | |- | ||
+ | | <code>info:image</code> || <code>{URL}</code> || | ||
+ | <code>"info:image": "http://msx.benzac.de/img/icon.png"</code><br/> | ||
+ | <code>"info:image": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=130|'''0.1.130''' || | ||
+ | Sets up a player info image. The area of the image is 128x416 (WxH) pixels at layout resolution 720p (192x624 at 1080p). The image is sized to fill the entire width (by keeping the ratio) and is positioned at the top. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
+ | |- | ||
+ | | <code>info:text</code> || <code>{TEXT}</code> || | ||
+ | <code>"info:text": "Additional video/audio information."</code><br/> | ||
+ | <code>"info:text": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=130|'''0.1.130''' || | ||
+ | Sets up a player info text. | ||
+ | This property supports [[Inline Expressions]]. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
|- | |- | ||
| <code>label:duration</code> || <code>{LABEL}</code> || | | <code>label:duration</code> || <code>{LABEL}</code> || | ||
− | <code>"label:duration":"Custom duration label"</code><br/> | + | <code>"label:duration": "Custom duration label"</code><br/> |
− | <code>"label:duration":"default"</code><br/> | + | <code>"label:duration": "Custom duration label ({VALUE})"</code><br/> |
− | || '''Yes''' || | + | <code>"label:duration": "default"</code><br/> |
− | Sets up the player duration label (overrides the default duration value of the video/audio player with a custom value). | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
+ | Sets up the player duration label (overrides the default duration value of the video/audio player with a custom value). If the custom value contains the <code>{VALUE}</code> keyword, it is replaced with the default value. | ||
+ | This property supports [[Inline Expressions]]. | ||
|- | |- | ||
| <code>label:extension</code> || <code>{LABEL}</code> || | | <code>label:extension</code> || <code>{LABEL}</code> || | ||
− | <code>"label:extension":"{ico:live-tv}"</code><br/> | + | <code>"label:extension": "{ico:live-tv}"</code><br/> |
− | <code>"label:extension":"default"</code><br/> | + | <code>"label:extension": "default"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Sets up an additional player extension label. | Sets up an additional player extension label. | ||
+ | This property supports [[Inline Expressions]] and [[Live Inline Expressions]]. | ||
|- | |- | ||
| <code>label:position</code> || <code>{LABEL}</code> || | | <code>label:position</code> || <code>{LABEL}</code> || | ||
− | <code>"label:position":"Custom position label"</code><br/> | + | <code>"label:position": "Custom position label"</code><br/> |
− | <code>"label:position":"default"</code><br/> | + | <code>"label:position": "Custom position label ({VALUE})"</code><br/> |
− | || '''Yes''' || | + | <code>"label:position": "default"</code><br/> |
− | Sets up the player position label (overrides the default position value of the video/audio player with a custom value). | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
+ | Sets up the player position label (overrides the default position value of the video/audio player with a custom value). If the custom value contains the <code>{VALUE}</code> keyword, it is replaced with the default value. | ||
+ | This property supports [[Inline Expressions]]. | ||
+ | |- | ||
+ | | <code>label:speed</code> || <code>{LABEL}</code> || | ||
+ | <code>"label:speed": "Custom speed label"</code><br/> | ||
+ | <code>"label:speed": "Custom speed label ({VALUE})"</code><br/> | ||
+ | <code>"label:speed": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=130|'''0.1.130''' || | ||
+ | Sets up the player speed label (overrides the default speed value of the video/audio player with a custom value). If the custom value contains the <code>{VALUE}</code> keyword, it is replaced with the default value. | ||
+ | This property supports [[Inline Expressions]]. | ||
|- | |- | ||
| <code>progress:color</code> || <code>{COLOR}</code> || | | <code>progress:color</code> || <code>{COLOR}</code> || | ||
− | <code>"progress:color":"msx-red"</code><br/> | + | <code>"progress:color": "msx-red"</code><br/> |
− | <code>"progress:color":"default"</code><br/> | + | <code>"progress:color": "default"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Sets up the player progress color. | Sets up the player progress color. | ||
|- | |- | ||
| <code>progress:marker:enable</code> || <code>{BOOLEAN_VALUE}</code> || | | <code>progress:marker:enable</code> || <code>{BOOLEAN_VALUE}</code> || | ||
− | <code>"progress:marker:enable":"true"</code><br/> | + | <code>"progress:marker:enable": "true"</code><br/> |
− | <code>"progress:marker:enable":"false"</code><br/> | + | <code>"progress:marker:enable": "false"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Enables/Disables the player progress marker. | Enables/Disables the player progress marker. | ||
|- | |- | ||
| <code>progress:type</code> || <code>{PROGRESS_TYPE}</code> || | | <code>progress:type</code> || <code>{PROGRESS_TYPE}</code> || | ||
− | <code>"progress:type":"position"</code><br/> | + | <code>"progress:type": "position"</code><br/> |
− | <code>"progress:type":"position:{POSITION} {ico:image}"</code><br/> | + | <code>"progress:type": "position:{POSITION} {ico:image}"</code><br/> |
− | <code>"progress:type":"number"</code><br/> | + | <code>"progress:type": "number"</code><br/> |
− | <code>"progress:type":"number:{NUMBER} {ico:image}"</code><br/> | + | <code>"progress:type": "number:{NUMBER} {ico:image}"</code><br/> |
− | <code>"progress:type":"percentage"</code><br/> | + | <code>"progress:type": "percentage"</code><br/> |
− | <code>"progress:type":"time:{LIVE_DURATION_FORMAT}"</code><br/> | + | <code>"progress:type": "time:{LIVE_DURATION_FORMAT}"</code><br/> |
− | <code>"progress:type":"text:{LIVE_DURATION_TEXT}"</code><br/> | + | <code>"progress:type": "text:{LIVE_DURATION_TEXT}"</code><br/> |
− | <code>"progress:type":"reverse:position"</code><br/> | + | <code>"progress:type": "reverse:position"</code><br/> |
− | <code>"progress:type":"reverse:position:{POSITION} {ico:image}"</code><br/> | + | <code>"progress:type": "reverse:position:{POSITION} {ico:image}"</code><br/> |
− | <code>"progress:type":"reverse:number"</code><br/> | + | <code>"progress:type": "reverse:number"</code><br/> |
− | <code>"progress:type":"reverse:number:{NUMBER} {ico:image}"</code><br/> | + | <code>"progress:type": "reverse:number:{NUMBER} {ico:image}"</code><br/> |
− | <code>"progress:type":"reverse:percentage"</code><br/> | + | <code>"progress:type": "reverse:percentage"</code><br/> |
− | <code>"progress:type":"reverse:time:{LIVE_DURATION_FORMAT}"</code><br/> | + | <code>"progress:type": "reverse:time:{LIVE_DURATION_FORMAT}"</code><br/> |
− | <code>"progress:type":"reverse:text:{LIVE_DURATION_TEXT}"</code><br/> | + | <code>"progress:type": "reverse:text:{LIVE_DURATION_TEXT}"</code><br/> |
− | <code>"progress:type":"difference:position"</code><br/> | + | <code>"progress:type": "difference:position"</code><br/> |
− | <code>"progress:type":"difference:position:{POSITION} {ico:image}"</code><br/> | + | <code>"progress:type": "difference:position:{POSITION} {ico:image}"</code><br/> |
− | <code>"progress:type":"difference:number"</code><br/> | + | <code>"progress:type": "difference:number"</code><br/> |
− | <code>"progress:type":"difference:number:{NUMBER} {ico:image}"</code><br/> | + | <code>"progress:type": "difference:number:{NUMBER} {ico:image}"</code><br/> |
− | <code>"progress:type":"difference:percentage"</code><br/> | + | <code>"progress:type": "difference:percentage"</code><br/> |
− | <code>"progress:type":"difference:time:{LIVE_DURATION_FORMAT}"</code><br/> | + | <code>"progress:type": "difference:time:{LIVE_DURATION_FORMAT}"</code><br/> |
− | <code>"progress:type":"difference:text:{LIVE_DURATION_TEXT}"</code><br/> | + | <code>"progress:type": "difference:text:{LIVE_DURATION_TEXT}"</code><br/> |
− | <code>"progress:type":"fix:Fix progress label"</code><br/> | + | <code>"progress:type": "fix:Fix progress label"</code><br/> |
− | <code>"progress:type":"default"</code><br/> | + | <code>"progress:type": "default"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
− | Sets up the player progress type (<code>default</code> is like <code>time:hh:mm:ss</code>). For the type that starts with (or contains) <code>position:</code>, the <code>{POSITION}</code> part is automatically replaced with the corresponding position value. For the type that starts with (or contains) <code>number:</code>, the <code>{NUMBER}</code> part is automatically replaced with the corresponding number value (which is the incremented position value). | + | Sets up the player progress type (<code>"default"</code> is like <code>"time:hh:mm:ss"</code>). For the type that starts with (or contains) <code>position:</code>, the <code>{POSITION}</code> part is automatically replaced with the corresponding position value. For the type that starts with (or contains) <code>number:</code>, the <code>{NUMBER}</code> part is automatically replaced with the corresponding number value (which is the incremented position value). |
|- | |- | ||
| <code>resume:key</code> || <code>{RESUME_KEY}</code> || | | <code>resume:key</code> || <code>{RESUME_KEY}</code> || | ||
− | <code>"resume:key":"id"</code><br/> | + | <code>"resume:key": "id"</code><br/> |
− | <code>"resume:key":"url"</code><br/> | + | <code>"resume:key": "url"</code><br/> |
− | <code>"resume:key":"custom_resume_key"</code><br/> | + | <code>"resume:key": "custom_resume_key"</code><br/> |
− | || No || | + | || No || data-sort-value=111|'''0.1.111''' || |
Sets up a resume key to store/restore the content position. If the key is set to <code>"id"</code>, the corresponding content item ID is used as key. If the key is set to <code>"url"</code>, the corresponding content video/audio URL is used as key. In all other cases, the key is used as is. | Sets up a resume key to store/restore the content position. If the key is set to <code>"id"</code>, the corresponding content item ID is used as key. If the key is set to <code>"url"</code>, the corresponding content video/audio URL is used as key. In all other cases, the key is used as is. | ||
− | '''Note: The key is stored as hash code on the local device. Stored keys can be cleared with the <code>resume:clear</code> actions.''' | + | '''Note: The key is stored as hash code on the local device. Stored keys can be cleared with the <code>resume:clear</code> actions. If the <code>resume:position</code> property is also set, the content position is only stored.''' |
|- | |- | ||
| <code>resume:position</code> || <code>{RESUME_POSITION}</code> || | | <code>resume:position</code> || <code>{RESUME_POSITION}</code> || | ||
− | <code>"resume:position":"10"</code><br/> | + | <code>"resume:position": "10"</code><br/> |
− | <code>"resume:position":"10%"</code><br/> | + | <code>"resume:position": "10%"</code><br/> |
− | || '''Yes''' || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Sets up a fix resume position in seconds or percentage to start the content from there. | Sets up a fix resume position in seconds or percentage to start the content from there. | ||
|- | |- | ||
| <code>trigger:{TRIGGER_KEY}</code> || <code>{ACTION}</code> || | | <code>trigger:{TRIGGER_KEY}</code> || <code>{ACTION}</code> || | ||
− | <code>"trigger:load":"info:Video loaded."</code><br/> | + | <code>"trigger:load": "info:Video loaded."</code><br/> |
− | <code>"trigger:ready":"info:Video ready."</code><br/> | + | <code>"trigger:ready": "info:Video ready."</code><br/> |
− | <code>"trigger:start":"info:Video started."</code><br/> | + | <code>"trigger:start": "info:Video started."</code><br/> |
− | <code>"trigger:end":"info:Video ended."</code><br/> | + | <code>"trigger:end": "info:Video ended."</code><br/> |
− | <code>"trigger:complete":"info:Video completed."</code><br/> | + | <code>"trigger:complete": "info:Video completed."</code><br/> |
− | <code>"trigger:10":"info:10 seconds of video passed."</code><br/> | + | <code>"trigger:10": "info:10 seconds of video passed."</code><br/> |
− | <code>"trigger:10%":"info:10% of video passed."</code><br/> | + | <code>"trigger:10%": "info:10% of video passed."</code><br/> |
− | <code>"trigger:10t":"info:10 ticks of video passed."</code><br/> | + | <code>"trigger:10t": "info:10 ticks of video passed."</code><br/> |
− | <code>"trigger:20":"shot:info:20 seconds of video passed (shot)."</code><br/> | + | <code>"trigger:20": "shot:info:20 seconds of video passed (shot)."</code><br/> |
− | <code>"trigger:20%":"shot:info:20% of video passed (shot)."</code><br/> | + | <code>"trigger:20%": "shot:info:20% of video passed (shot)."</code><br/> |
− | <code>"trigger:20t":"shot:info:20 ticks of video passed (shot)."</code><br/> | + | <code>"trigger:20t": "shot:info:20 ticks of video passed (shot)."</code><br/> |
− | <code>"trigger:quartile1":"info:First quartile of video entered."</code><br/> | + | <code>"trigger:quartile1": "info:First quartile of video entered."</code><br/> |
− | <code>"trigger:quartile2":"info:Second quartile of video entered."</code><br/> | + | <code>"trigger:quartile2": "info:Second quartile of video entered."</code><br/> |
− | <code>"trigger:quartile3":"info:Third quartile of video entered."</code><br/> | + | <code>"trigger:quartile3": "info:Third quartile of video entered."</code><br/> |
− | <code>"trigger:quartile4":"info:Fourth quartile of video entered."</code><br/> | + | <code>"trigger:quartile4": "info:Fourth quartile of video entered."</code><br/> |
− | <code>"trigger:first_quartile":"info:First quartile of video reached."</code><br/> | + | <code>"trigger:first_quartile": "info:First quartile of video reached."</code><br/> |
− | <code>"trigger:midpoint":"info:Midpoint of video reached."</code><br/> | + | <code>"trigger:midpoint": "info:Midpoint of video reached."</code><br/> |
− | <code>"trigger:third_quartile":"info:Third quartile of video reached."</code><br/> | + | <code>"trigger:third_quartile": "info:Third quartile of video reached."</code><br/> |
− | <code>"trigger:play":"info:Video is playing."</code><br/> | + | <code>"trigger:play": "info:Video is playing."</code><br/> |
− | <code>"trigger:pause":"info:Video paused."</code><br/> | + | <code>"trigger:pause": "info:Video paused."</code><br/> |
− | <code>"trigger:stop":"info:Video stopped."</code><br/> | + | <code>"trigger:stop": "info:Video stopped."</code><br/> |
− | <code>"trigger:foreground":"info:Video moved to foreground."</code><br/> | + | <code>"trigger:active": "info:Video player is visible or video moved to foreground."</code><br/> |
− | <code>"trigger:background":"info:Video moved to background."</code><br/> | + | <code>"trigger:inactive": "info:Video moved to background."</code><br/> |
− | <code>"trigger:back": | + | <code>"trigger:player": "info:Video player is visible."</code><br/> |
− | || '''Yes''' || | + | <code>"trigger:foreground": "info:Video moved to foreground."</code><br/> |
+ | <code>"trigger:background": "info:Video moved to background."</code><br/> | ||
+ | <code>"trigger:back" ":info:Video back executed."</code><br/> | ||
+ | || '''Yes''' || data-sort-value=58|'''0.1.58''' || | ||
Sets up a video/audio trigger. | Sets up a video/audio trigger. | ||
'''Note: For trigger key <code>complete</code>, the action <code>player:auto:next</code> is automatically set (please use trigger key <code>end</code> if you want to keep the default complete action). For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For trigger key <code>complete</code>, the action <code>player:auto:next</code> is automatically set (please use trigger key <code>end</code> if you want to keep the default complete action). For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
+ | |- | ||
+ | | <code>video:duration</code> || <code>{VIDEO_DURATION}</code> || | ||
+ | <code>"video:duration:": "60"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
+ | Sets up a custom video duration in seconds. If a custom duration is set, only that duration is displayed during playback. It can be used for live data or ads to disable/override the progress feature. The duration <code>-1</code> is default and enables the display feature. | ||
+ | |- | ||
+ | | <code>video:position</code> || <code>{VIDEO_POSITION}</code> || | ||
+ | <code>"video:position:": "0"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
+ | Sets up a custom video position in seconds. If a custom position is set, only that position is displayed during playback and it is not possible to seek to another position (instead a <code>custom:video:seek</code> event is triggered). It can be used for live data or ads to disable/override the progress feature. The position <code>-1</code> is default and enables the display and seek feature. The position <code>-2</code> only enables the display feature (it is not possible to seek to another position). | ||
+ | |- | ||
+ | | <code>video:speed</code> || <code>{VIDEO_SPEED}</code> || | ||
+ | <code>"video:speed:": "1"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
+ | Sets up a custom video speed. If a custom speed is set, only that speed is displayed during playback and it is not possible to change it (instead a <code>custom:video:speed</code> event is triggered). It can be used for live data or ads to disable/override the speed feature. The speed <code>-1</code> is default and enables the display and change feature. The speed <code>-2</code> only enables the display feature (it is not possible to change it). | ||
+ | |||
+ | '''Note: The actual video speed is not changed. For example, if the custom video speed is set to x0.5, the actual video may still be playing at normal speed.''' | ||
+ | |- | ||
+ | | <code>video:state</code> || <code>{VIDEO_STATE}</code> || | ||
+ | <code>"video:state:": "2"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
+ | Sets up a custom video state. If a custom state is set, only that state is displayed during playback and it is not possible to change it (instead a <code>custom:video:play</code> or <code>custom:video:pause</code> event is triggered). It can be used for live data or ads to disable/override the play/pause feature. | ||
+ | * <code>-2</code>: Read-only (only enables the display feature) | ||
+ | * <code>-1</code>: Clear (default value that enables the display and change feature) | ||
+ | * <code>1</code>: Stopped (not supported) | ||
+ | * <code>2</code>: Playing | ||
+ | * <code>3</code>: Paused | ||
+ | |||
+ | '''Note: The actual video state is not changed. For example, if the custom video state is paused, the actual video may still be in the playing state.''' | ||
|} | |} | ||
== Example == | == Example == | ||
=== Screenshot === | === Screenshot === | ||
− | [[File: | + | [[File:properties.png|thumb|640px|none|Example Screenshot (Extended Properties)]] |
=== Code === | === Code === | ||
Line 213: | Line 361: | ||
"title": "Video 3", | "title": "Video 3", | ||
"playerLabel": "Video 3", | "playerLabel": "Video 3", | ||
− | "action": "video:http://msx.benzac.de/media/ | + | "action": "video:http://msx.benzac.de/media/video4.mp4", |
"properties": { | "properties": { | ||
"button:content:icon": "info", | "button:content:icon": "info", | ||
Line 220: | Line 368: | ||
"progress:color": "msx-blue", | "progress:color": "msx-blue", | ||
"progress:type": "percentage", | "progress:type": "percentage", | ||
− | "trigger:midpoint": "info:Midpoint of video reached." | + | "trigger:midpoint": "info:Midpoint of video reached.", |
+ | "trigger:third_quartile": "dialog:none" | ||
+ | } | ||
+ | }, { | ||
+ | "badge": "Extended", | ||
+ | "title": "Video 4", | ||
+ | "titleFooter": "0.1.130+", | ||
+ | "playerLabel": "Video 4", | ||
+ | "action": "video:http://msx.benzac.de/media/video5.mp4", | ||
+ | "properties": { | ||
+ | "button:content:icon": "info", | ||
+ | "button:content:action": "info:Video info executed.", | ||
+ | "button:rewind:icon": "thumb-down", | ||
+ | "button:rewind:action": "info:Thumb down executed.", | ||
+ | "button:forward:icon": "thumb-up", | ||
+ | "button:forward:action": "info:Thumb up executed.", | ||
+ | "button:restart:display": "false", | ||
+ | "button:speed:display": "false", | ||
+ | "label:extension": "{ico:msx-white:ondemand-video} Extended", | ||
+ | "progress:type": "time:[H:]M:ss", | ||
+ | "control:type": "extended", | ||
+ | "info:image": "http://msx.benzac.de/img/icon.png", | ||
+ | "info:text": "Placeholder for additional video information." | ||
+ | } | ||
+ | }, { | ||
+ | "badge": "Extended", | ||
+ | "title": "Video 5", | ||
+ | "titleFooter": "0.1.130+", | ||
+ | "playerLabel": "Video 5", | ||
+ | "action": "video:http://msx.benzac.de/media/video3.mp4", | ||
+ | "properties": { | ||
+ | "button:content:icon": "info", | ||
+ | "button:content:action": "panel:request:interaction:program@http://msx.benzac.de/interaction/live.html", | ||
+ | "button:restart:display": "false", | ||
+ | "button:rewind:display": "false", | ||
+ | "button:play_pause:display": "false", | ||
+ | "button:forward:display": "false", | ||
+ | "button:speed:display": "false", | ||
+ | "label:extension": "{ico:msx-white:access-time} {now:time:hh:mm:ss}", | ||
+ | "label:position": "...", | ||
+ | "label:duration": "...", | ||
+ | "control:type": "extended", | ||
+ | "trigger:load": "interaction:load:http://msx.benzac.de/interaction/live.html", | ||
+ | "trigger:complete": "player:auto:restart", | ||
+ | "info:text": "This video is controlled by an interaction plugin to simulate a live stream.", | ||
+ | "live:channel": "0", | ||
+ | "live:program": "-1" | ||
+ | } | ||
+ | }, { | ||
+ | "badge": "Extended", | ||
+ | "title": "Video 6", | ||
+ | "titleFooter": "0.1.140+", | ||
+ | "playerLabel": "Video 6", | ||
+ | "action": "video:http://msx.benzac.de/media/video6.mp4", | ||
+ | "properties": { | ||
+ | "control:type": "extended", | ||
+ | "control:action": "[player:show:execute|player:pause]", | ||
+ | "trigger:foreground": "player:auto:play", | ||
+ | "button:play_pause:icon": "default", | ||
+ | "button:play_pause:action": "[player:play_pause|player:hide_play]", | ||
+ | "info:text": "This video shows a quick play/pause function.{br}{ico:msx-white:play-arrow} If you press {txt:msx-white:OK} while the video is in foreground, it is paused.{br}{ico:msx-white:play-arrow} If you return to foreground, it is resumed.{br}" | ||
} | } | ||
}] | }] | ||
Line 227: | Line 435: | ||
=== Demo === | === Demo === | ||
− | * Launch via App: https://msx.benzac.de/?start= | + | * Launch via App: https://msx.benzac.de/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json |
− | * Launch via Demo Page: https://msx.benzac.de/info/?start= | + | * Launch via Demo Page: https://msx.benzac.de/info/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json |
Revision as of 09:03, 26 August 2021
These properties can be used for special use cases and are only valid for version 0.1.58+. Each property is a key-value pair of type string
and can be set in the properties
property of a Content Item Object. The dynamic properties can also be set via an action at runtime. For more information, please see Internal Actions.
Note: It is also possible to set values of type boolean
or number
as non-string
values (e.g. "true"
→ true
or "123"
→ 123
).
Syntax[edit]
Property | Value | Example | Dynamic | Since Version | Description |
---|---|---|---|---|---|
button:{BUTTON_ID}:action |
{ACTION} |
|
Yes | 0.1.111 |
Sets up a custom player button action (all buttons except the eject button are supported). By default, the following actions are executed.
Note: To use this property, the corresponding |
button:{BUTTON_ID}:display |
{BOOLEAN_VALUE} |
|
No | 0.1.130 |
Shows/Hides a player button (all buttons except the eject button are supported). |
button:{BUTTON_ID}:enable |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Enables/Disables a player button (all buttons except the eject button are supported). |
button:{BUTTON_ID}:focus |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Focuses a player button (if player is loaded). |
button:{BUTTON_ID}:icon |
{ICON} |
|
Yes | 0.1.111 |
Sets up a custom player button icon (all buttons except the eject button are supported). By default, the following icons are used.
Note: To use this property, the corresponding |
button:{BUTTON_ID}:key |
{KEY} |
|
No | 0.1.132 |
Sets up a player button shortcut key. |
control:action |
{ACTION} |
|
No | 0.1.140 |
Sets up a custom player control action (replacement for the action that is executed if the OK key is pressed while the video/audio is in foreground). By default, the action Note: For property actions, it is not possible to provide an action-related |
control:load |
{LOAD_MODE} |
|
No | 0.1.111 |
Sets up the player control load mode. If the mode is set to |
control:return |
{RETURN_MODE} |
|
No | 0.1.140 |
Sets up the player control return mode. If the mode is set to |
control:type |
{CONTROL_TYPE} |
|
No | 0.1.130 |
Sets up the player control type. If the type is set to |
image:action |
{ACTION} |
|
No | 0.1.111 |
Sets up a custom slideshow image action (replacement for the default slideshow image action). By default, the action Note: For property actions, it is not possible to provide an action-related |
image:extension |
{LABEL} |
|
No | 0.1.111 |
Sets up an additional slideshow image extension label (displayed in the slideshow labels). This property supports Inline Expressions. |
image:trigger |
{ACTION} |
|
No | 0.1.111 |
Sets up a slideshow image trigger. Note: For property actions, it is not possible to provide an action-related |
info:image |
{URL} |
|
Yes | 0.1.130 |
Sets up a player info image. The area of the image is 128x416 (WxH) pixels at layout resolution 720p (192x624 at 1080p). The image is sized to fill the entire width (by keeping the ratio) and is positioned at the top. Note: To use this property, the |
info:text |
{TEXT} |
|
Yes | 0.1.130 |
Sets up a player info text. This property supports Inline Expressions. Note: To use this property, the |
label:duration |
{LABEL} |
|
Yes | 0.1.111 |
Sets up the player duration label (overrides the default duration value of the video/audio player with a custom value). If the custom value contains the |
label:extension |
{LABEL} |
|
Yes | 0.1.111 |
Sets up an additional player extension label. This property supports Inline Expressions and Live Inline Expressions. |
label:position |
{LABEL} |
|
Yes | 0.1.111 |
Sets up the player position label (overrides the default position value of the video/audio player with a custom value). If the custom value contains the |
label:speed |
{LABEL} |
|
Yes | 0.1.130 |
Sets up the player speed label (overrides the default speed value of the video/audio player with a custom value). If the custom value contains the |
progress:color |
{COLOR} |
|
Yes | 0.1.111 |
Sets up the player progress color. |
progress:marker:enable |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Enables/Disables the player progress marker. |
progress:type |
{PROGRESS_TYPE} |
|
Yes | 0.1.111 |
Sets up the player progress type ( |
resume:key |
{RESUME_KEY} |
|
No | 0.1.111 |
Sets up a resume key to store/restore the content position. If the key is set to Note: The key is stored as hash code on the local device. Stored keys can be cleared with the |
resume:position |
{RESUME_POSITION} |
|
Yes | 0.1.111 |
Sets up a fix resume position in seconds or percentage to start the content from there. |
trigger:{TRIGGER_KEY} |
{ACTION} |
|
Yes | 0.1.58 |
Sets up a video/audio trigger. Note: For trigger key |
video:duration |
{VIDEO_DURATION} |
|
Yes | 0.1.128 |
Sets up a custom video duration in seconds. If a custom duration is set, only that duration is displayed during playback. It can be used for live data or ads to disable/override the progress feature. The duration |
video:position |
{VIDEO_POSITION} |
|
Yes | 0.1.128 |
Sets up a custom video position in seconds. If a custom position is set, only that position is displayed during playback and it is not possible to seek to another position (instead a |
video:speed |
{VIDEO_SPEED} |
|
Yes | 0.1.128 |
Sets up a custom video speed. If a custom speed is set, only that speed is displayed during playback and it is not possible to change it (instead a Note: The actual video speed is not changed. For example, if the custom video speed is set to x0.5, the actual video may still be playing at normal speed. |
video:state |
{VIDEO_STATE} |
|
Yes | 0.1.128 |
Sets up a custom video state. If a custom state is set, only that state is displayed during playback and it is not possible to change it (instead a
Note: The actual video state is not changed. For example, if the custom video state is paused, the actual video may still be in the playing state. |
Example[edit]
Screenshot[edit]
Code[edit]
{
"type": "pages",
"headline": "Extended Properties Test",
"template": {
"type": "separate",
"layout": "0,0,2,4",
"icon": "msx-white-soft:movie",
"color": "msx-glass"
},
"items": [{
"title": "Video 1",
"playerLabel": "Video 1",
"action": "video:http://msx.benzac.de/media/video1.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Live info executed.",
"label:duration": "Live",
"label:extension": "{ico:msx-red:live-tv}",
"progress:color": "msx-red",
"progress:type": "reverse:time:[H:]M:ss"
}
}, {
"title": "Video 2",
"playerLabel": "Video 2",
"action": "video:http://msx.benzac.de/media/video2.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Ad info executed.",
"button:forward:enable": "false",
"button:rewind:enable": "false",
"button:restart:enable": "false",
"button:speed:enable": "false",
"label:extension": "{txt:msx-yellow:Ad}",
"progress:color": "msx-yellow",
"progress:type": "text:s",
"progress:marker:enable": "false"
}
}, {
"title": "Video 3",
"playerLabel": "Video 3",
"action": "video:http://msx.benzac.de/media/video4.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Video info executed.",
"label:extension": "{ico:msx-blue:local-play}",
"progress:color": "msx-blue",
"progress:type": "percentage",
"trigger:midpoint": "info:Midpoint of video reached.",
"trigger:third_quartile": "dialog:none"
}
}, {
"badge": "Extended",
"title": "Video 4",
"titleFooter": "0.1.130+",
"playerLabel": "Video 4",
"action": "video:http://msx.benzac.de/media/video5.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Video info executed.",
"button:rewind:icon": "thumb-down",
"button:rewind:action": "info:Thumb down executed.",
"button:forward:icon": "thumb-up",
"button:forward:action": "info:Thumb up executed.",
"button:restart:display": "false",
"button:speed:display": "false",
"label:extension": "{ico:msx-white:ondemand-video} Extended",
"progress:type": "time:[H:]M:ss",
"control:type": "extended",
"info:image": "http://msx.benzac.de/img/icon.png",
"info:text": "Placeholder for additional video information."
}
}, {
"badge": "Extended",
"title": "Video 5",
"titleFooter": "0.1.130+",
"playerLabel": "Video 5",
"action": "video:http://msx.benzac.de/media/video3.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "panel:request:interaction:program@http://msx.benzac.de/interaction/live.html",
"button:restart:display": "false",
"button:rewind:display": "false",
"button:play_pause:display": "false",
"button:forward:display": "false",
"button:speed:display": "false",
"label:extension": "{ico:msx-white:access-time} {now:time:hh:mm:ss}",
"label:position": "...",
"label:duration": "...",
"control:type": "extended",
"trigger:load": "interaction:load:http://msx.benzac.de/interaction/live.html",
"trigger:complete": "player:auto:restart",
"info:text": "This video is controlled by an interaction plugin to simulate a live stream.",
"live:channel": "0",
"live:program": "-1"
}
}, {
"badge": "Extended",
"title": "Video 6",
"titleFooter": "0.1.140+",
"playerLabel": "Video 6",
"action": "video:http://msx.benzac.de/media/video6.mp4",
"properties": {
"control:type": "extended",
"control:action": "[player:show:execute|player:pause]",
"trigger:foreground": "player:auto:play",
"button:play_pause:icon": "default",
"button:play_pause:action": "[player:play_pause|player:hide_play]",
"info:text": "This video shows a quick play/pause function.{br}{ico:msx-white:play-arrow} If you press {txt:msx-white:OK} while the video is in foreground, it is paused.{br}{ico:msx-white:play-arrow} If you return to foreground, it is resumed.{br}"
}
}]
}