Necessary attributes in SMIL playlist
- region name has to be specified in one of these two ways
<region regionName="widget12"..../>
<!-- OR -->
<region xml:id="widget12" .... />
Supported features
- sequential and parallel play of audio, video, image and widget
- supports simple layering ( z-index ) with videos always played on background ( lowest level )
- pairs all media with proper regions from layout part of SMIL, if no region specified, uses values from root-layout tag
- plays media in endless loops if necessary ( one element as well as multiple )
- supports prefetch event ( plays intro while downloading rest of the files )
- downloads all necessary files from remote server, stores files in local storage
- downloads and extracts of widgets into local storage
- checks for changes in provided SMIL playlist as well as checks for all files linked in SMIL
- ability to restart on SMIL playlist change
- supports media scheduling using wallclock definition
- supports media scheduling using conditional expressions
- supports playing media loops using repeatCount attribute, possible to combine with wallclock
- ability to use relative paths to process files, e.g.:
src="folder/img.png"
- triggers and sensors by Nexmosphere
- keyboard based triggers
- mouse based triggers
- synchronization playback and failover content
- priority playlist = excl and priorityClass tags
- animated transitions between images and widgets
- reporting logs using signageOS api
- web widgets
NOT supported features
- all videos are running in foreground, now it's not possible to place a widget on top of video at this moment
Do you need to play a video in background? Follow this workaround.
Full SMIL reference table
Element [Attribute] | Usage | Available from SMIL Applet Version | Reference |
---|---|---|---|
/smil | Main SMIL element | v1.0.0 | Layout |
/smil/head | SMIL head section | v1.0.0 | Layout |
/smil/head/layout | Screen layout | v1.0.0 | Layout |
/smil/head/layout/root-layout | Screen logical resolution | v1.0.0 | Layout |
/smil/head/layout/root-layout [width] | Logical resolution of width of the screen, in pixels | v1.0.0 | Layout |
/smil/head/layout/root-layout [height] | Logical resolution of height of the screen, in pixels | v1.0.0 | Layout |
/smil/head/layout/region | Definition of screen part | v1.0.0 | Layout |
/smil/head/layout/region [xml:id] | ID of the screen part | v1.0.0 | Layout |
/smil/head/layout/region [left] | Left coordinate of the screen part | v1.0.0 | Layout |
/smil/head/layout/region [top] | Top coordinate of the screen part | v1.0.0 | Layout |
/smil/head/layout/region [width] | Width of the screen part | v1.0.0 | Layout |
/smil/head/layout/region [height] | Height of the screen part | v1.0.0 | Layout |
/smil/head/layout/region [z-index] | Z-order (closer if larger) of the screen part | v1.0.0 | Layout |
/smil/head/sensors/ | Define available sensors | v4.0.0 | Sensors |
/smil/head/sensors/sensor [type] | Sensor type like RFID | v4.0.0 | Sensors |
/smil/head/sensors/sensor [id] | Sensor id for reference in triggers | v4.0.0 | Sensors |
/smil/head/sensors/sensor [driver] | Sensor driver specific for each sensor manufacturer | v4.0.0 | Sensors |
/smil/head/sensors/sensor/option | Sensor custom options required for sensor driver | v4.0.0 | Sensors |
/smil/head/triggers/ | Triggers defined for current SMIL playlist | v4.0.0 | Triggers |
/smil/head/triggers/trigger [id] | Trigger id for use in begin attribute | v4.0.0 | Triggers |
/smil/head/triggers/trigger [condition] | Conditional logic between all defined triggers in the triggers group | v4.0.0 | Triggers |
/smil/head/triggers/trigger/condition [origin] | Source of trigger, usually sensor id | v4.0.0 | Triggers |
/smil/head/triggers/trigger/condition [data] | Data required/match for trigger to be active | v4.0.0 | Triggers |
/smil/head/triggers/trigger/condition [action] | Event on the trigger origin required for trigger to be active | v4.0.0 | Triggers |
/smil/head/trigger/region [z-index] | Z-order (closer if larger) of the screen part | v1.0.0 | Layout |
/smil/body | SMIL body section | v1.0.0 | Layout |
/smil/body/seq | Simple sequential playlist | v1.0.0 | Sequential playlist <seq> |
/smil/body/par | Parallel scheduling of playlists | v1.0.0 | Parallel playlist <par> |
/smil/body/excl | Grouping of playlists with priority-based exclusive playback | v1.0.0 | Exclusive playlist <excl> |
seq [begin] | Begin time/event of the playlist relative to timebase | v1.0.0 | Sequential playlist <seq> |
seq [end] | End time/event of the playlist, as offset from sequence start | v1.0.0 | Sequential playlist <seq> |
seq [dur] | Duration of the playlist, per single loop | v1.0.0 | Sequential playlist <seq> |
seq [repeatCount] | Number of times the playlist is to repeat (also “indefinite”) | v1.0.0 | Sequential playlist <seq> |
seq [repeatDur] | Total duration of the repeats (also “indefinite”) | v1.0.0 | Sequential playlist <seq> |
seq/seq | Nested sequential schedule | v1.0.0 | Sequential playlist <seq> |
seq/par | Sequentially nesting parallel schedules | v1.0.0 | Sequential playlist <seq> |
seq/excl | Sequentially nesting exclusive schedules | v1.0.0 | Sequential playlist <seq> |
par [begin] | Begin time/event of the parallel schedule relative to timebase | v1.0.0 | Parallel playlist <par> |
par [end] | End time/event of the parallel, as offset from parallel start | v1.0.0 | Parallel playlist <par> |
par [dur] | Duration of the parallel schedule, per single loop | v1.0.0 | Parallel playlist <par> |
par [repeatCount] | Number of times the parallel is to repeat (also “indefinite”) | v1.0.0 | Parallel playlist <par> |
par [repeatDur] | Total duration of the repeats (also “indefinite”) | v1.0.0 | Parallel playlist <par> |
par/seq | Scheduling of multiple playlists to start simultaneously | v1.0.0 | Parallel playlist <par> |
par/seq [begin(wallclock)] | Start sequence on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
par/seq [end(wallclock)] | End sequence on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
par/par | Scheduling of multiple parallels to start simultaneously | v1.0.0 | Parallel playlist <par> |
par/par [begin(wallclock)] | Start parallel on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
par/par [end(wallclock)] | End parallel on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
par/excl | Scheduling of multiple exclusives to start simultaneously | v1.0.0 | Parallel playlist <par> |
par/excl [begin(wallclock)] | Start exclusive on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
par/excl [end(wallclock)] | End exclusive on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl [begin] | Begin time/event of the exclusive schedule relative to timebase | v1.0.0 | Exclusive playlist <excl> |
excl [end] | End time/event of the exclusive, as offset from exclusive start | v1.0.0 | Exclusive playlist <excl> |
excl [dur] | Duration of the exclusive schedule, per single loop | v1.0.0 | Exclusive playlist <excl> |
excl [repeatCount] | Number of times the exclusive is to repeat (also “indefinite”) | v1.0.0 | Exclusive playlist <excl> |
excl [repeatDur] | Total duration of the repeats (also “indefinite”) | v1.0.0 | Exclusive playlist <excl> |
excl/seq | Scheduling of multiple playlists to run one at a time | v1.0.0 | Exclusive playlist <excl> |
excl/seq [begin(wallclock)] | Start sequence on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/seq [end(wallclock)] | End sequence on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/par | Scheduling of multiple parallels to run one at a time | v1.0.0 | Exclusive playlist <excl> |
excl/par [begin(wallclock)] | Start parallel on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/par [end(wallclock)] | End parallel on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/excl | Scheduling of multiple exclusives to run one at a time | v1.0.0 | Exclusive playlist <excl> |
excl/excl [begin(wallclock)] | Start exclusive on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/excl [end(wallclock)] | End exclusive on ISO-8601 time (also repeat pattern) | v1.0.0 | Playback scheduling via WallClock |
excl/priorityClass | Defining interrupt behavior for an exclusive schedule | v1.0.0 | Exclusive playlist <excl> |
excl/priorityClass [peers] | “stop”, “pause”, “defer”, or “never” to interrupt peers in class | v1.0.0 | Exclusive playlist <excl> |
excl/priorityClass [higher] | “stop” or “pause” to interrupt higher priority class | v1.0.0 | Exclusive playlist <excl> |
excl/priorityClass [lower] | “defer” or “never” to interrupt lower priority class | v1.0.0 | Exclusive playlist <excl> |
(seq,par,excl)/video | Video media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [ref] | URL pointing to media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [region] | Screen part to play | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [begin] | Begin time to start play media item, relative to timebase | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [end] | End time of media item, relative to media item start | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [dur] | Duration of media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [repeatCount] | Number of times to repeat media item (also “indefinite”) | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/video [repeatDur] | Total duration to repeat media item (also “indefinite”) | v1.0.0 | Media Objects - videos, images, HTML5 |
par/video [begin(wallclock)] | Begin playback at specified wallclock time | v1.0.0 | Playback scheduling via WallClock |
par/video [end(wallclock)] | End playback at specified wallclock time | v1.0.0 | Playback scheduling via WallClock |
excl/video [begin(wallclock)] | Begin playback at specified wallclock time, interrupt peers | v1.0.0 | Playback scheduling via WallClock |
excl/video [end(wallclock)] | End playback at specified wallclock time, resume peers | v1.0.0 | Playback scheduling via WallClock |
(seq,par,excl)/img | Still image media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [ref] | URL pointing to media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [region] | Screen part to play | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [begin] | Begin time to start play media item, relative to timebase | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [end] | End time of media item, relative to media item start | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [dur] | Duration of media item | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [repeatCount] | Number of times to repeat media item (also “indefinite”) | v1.0.0 | Media Objects - videos, images, HTML5 |
(seq,par,excl)/img [repeatDur] | Total duration to repeat media item (also “indefinite”) | v1.0.0 | Media Objects - videos, images, HTML5 |
par/img [begin(wallclock)] | Begin playback at specified wallclock time | v1.0.0 | Playback scheduling via WallClock |
par/img [end(wallclock)] | End playback at specified wallclock time | v1.0.0 | Playback scheduling via WallClock |
excl/img [begin(wallclock)] | Begin playback at specified wallclock time, interrupt peers | v1.0.0 | Playback scheduling via WallClock |
excl/img [end(wallclock)] | End playback at specified wallclock time, resume peers | v1.0.0 | Playback scheduling via WallClock |
(seq,par,excl)/audio | Audio media item | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [ref] | URL pointing to media item | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [region] | Screen part to play | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [begin] | Begin time to start play media item, relative to timebase | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [end] | End time of media item, relative to media item start | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [dur] | Duration of media item | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [repeatCount] | Number of times to repeat media item (also “indefinite”) | Not supported | Media Objects - videos, images, HTML5 |
(seq,par,excl)/audio [repeatDur] | Total duration to repeat media item (also “indefinite”) | Not supported | Media Objects - videos, images, HTML5 |
par/audio [begin(wallclock)] | Begin playback at specified wallclock time | Not supported | Playback scheduling via WallClock |
par/audio [end(wallclock)] | End playback at specified wallclock time | Not supported | Playback scheduling via WallClock |
excl/audio [begin(wallclock)] | Begin playback at specified wallclock time, interrupt peers | Not supported | Playback scheduling via WallClock |
excl/audio [end(wallclock)] | End playback at specified wallclock time, resume peers | Not supported | Playback scheduling via WallClock |