Skip to main content

signageOS SMIL supported features and limitations

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]UsageAvailable from SMIL Applet VersionReference
/smilMain SMIL elementv1.0.0Layout
/smil/headSMIL head sectionv1.0.0Layout
/smil/head/layoutScreen layoutv1.0.0Layout
/smil/head/layout/root-layoutScreen logical resolutionv1.0.0Layout
/smil/head/layout/root-layout [width]Logical resolution of width of the screen, in pixelsv1.0.0Layout
/smil/head/layout/root-layout [height]Logical resolution of height of the screen, in pixelsv1.0.0Layout
/smil/head/layout/regionDefinition of screen partv1.0.0Layout
/smil/head/layout/region [xml:id]ID of the screen partv1.0.0Layout
/smil/head/layout/region [left]Left coordinate of the screen partv1.0.0Layout
/smil/head/layout/region [top]Top coordinate of the screen partv1.0.0Layout
/smil/head/layout/region [width]Width of the screen partv1.0.0Layout
/smil/head/layout/region [height]Height of the screen partv1.0.0Layout
/smil/head/layout/region [z-index]Z-order (closer if larger) of the screen partv1.0.0Layout
/smil/head/sensors/Define available sensorsv4.0.0Sensors
/smil/head/sensors/sensor [type]Sensor type like RFIDv4.0.0Sensors
/smil/head/sensors/sensor [id]Sensor id for reference in triggersv4.0.0Sensors
/smil/head/sensors/sensor [driver]Sensor driver specific for each sensor manufacturerv4.0.0Sensors
/smil/head/sensors/sensor/optionSensor custom options required for sensor driverv4.0.0Sensors
/smil/head/triggers/Triggers defined for current SMIL playlistv4.0.0Triggers
/smil/head/triggers/trigger [id]Trigger id for use in begin attributev4.0.0Triggers
/smil/head/triggers/trigger [condition]Conditional logic between all defined triggers in the triggers groupv4.0.0Triggers
/smil/head/triggers/trigger/condition [origin]Source of trigger, usually sensor idv4.0.0Triggers
/smil/head/triggers/trigger/condition [data]Data required/match for trigger to be activev4.0.0Triggers
/smil/head/triggers/trigger/condition [action]Event on the trigger origin required for trigger to be activev4.0.0Triggers
/smil/head/trigger/region [z-index]Z-order (closer if larger) of the screen partv1.0.0Layout
/smil/bodySMIL body sectionv1.0.0Layout
/smil/body/seqSimple sequential playlistv1.0.0Sequential playlist <seq>
/smil/body/parParallel scheduling of playlistsv1.0.0Parallel playlist <par>
/smil/body/exclGrouping of playlists with priority-based exclusive playbackv1.0.0Exclusive playlist <excl>
seq [begin]Begin time/event of the playlist relative to timebasev1.0.0Sequential playlist <seq>
seq [end]End time/event of the playlist, as offset from sequence startv1.0.0Sequential playlist <seq>
seq [dur]Duration of the playlist, per single loopv1.0.0Sequential playlist <seq>
seq [repeatCount]Number of times the playlist is to repeat (also “indefinite”)v1.0.0Sequential playlist <seq>
seq [repeatDur]Total duration of the repeats (also “indefinite”)v1.0.0Sequential playlist <seq>
seq/seqNested sequential schedulev1.0.0Sequential playlist <seq>
seq/parSequentially nesting parallel schedulesv1.0.0Sequential playlist <seq>
seq/exclSequentially nesting exclusive schedulesv1.0.0Sequential playlist <seq>
par [begin]Begin time/event of the parallel schedule relative to timebasev1.0.0Parallel playlist <par>
par [end]End time/event of the parallel, as offset from parallel startv1.0.0Parallel playlist <par>
par [dur]Duration of the parallel schedule, per single loopv1.0.0Parallel playlist <par>
par [repeatCount]Number of times the parallel is to repeat (also “indefinite”)v1.0.0Parallel playlist <par>
par [repeatDur]Total duration of the repeats (also “indefinite”)v1.0.0Parallel playlist <par>
par/seqScheduling of multiple playlists to start simultaneouslyv1.0.0Parallel playlist <par>
par/seq [begin(wallclock)]Start sequence on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
par/seq [end(wallclock)]End sequence on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
par/parScheduling of multiple parallels to start simultaneouslyv1.0.0Parallel playlist <par>
par/par [begin(wallclock)]Start parallel on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
par/par [end(wallclock)]End parallel on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
par/exclScheduling of multiple exclusives to start simultaneouslyv1.0.0Parallel playlist <par>
par/excl [begin(wallclock)]Start exclusive on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
par/excl [end(wallclock)]End exclusive on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl [begin]Begin time/event of the exclusive schedule relative to timebasev1.0.0Exclusive playlist <excl>
excl [end]End time/event of the exclusive, as offset from exclusive startv1.0.0Exclusive playlist <excl>
excl [dur]Duration of the exclusive schedule, per single loopv1.0.0Exclusive playlist <excl>
excl [repeatCount]Number of times the exclusive is to repeat (also “indefinite”)v1.0.0Exclusive playlist <excl>
excl [repeatDur]Total duration of the repeats (also “indefinite”)v1.0.0Exclusive playlist <excl>
excl/seqScheduling of multiple playlists to run one at a timev1.0.0Exclusive playlist <excl>
excl/seq [begin(wallclock)]Start sequence on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/seq [end(wallclock)]End sequence on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/parScheduling of multiple parallels to run one at a timev1.0.0Exclusive playlist <excl>
excl/par [begin(wallclock)]Start parallel on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/par [end(wallclock)]End parallel on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/exclScheduling of multiple exclusives to run one at a timev1.0.0Exclusive playlist <excl>
excl/excl [begin(wallclock)]Start exclusive on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/excl [end(wallclock)]End exclusive on ISO-8601 time (also repeat pattern)v1.0.0Playback scheduling via WallClock
excl/priorityClassDefining interrupt behavior for an exclusive schedulev1.0.0Exclusive playlist <excl>
excl/priorityClass [peers]“stop”, “pause”, “defer”, or “never” to interrupt peers in classv1.0.0Exclusive playlist <excl>
excl/priorityClass [higher]“stop” or “pause” to interrupt higher priority classv1.0.0Exclusive playlist <excl>
excl/priorityClass [lower]“defer” or “never” to interrupt lower priority classv1.0.0Exclusive playlist <excl>
(seq,par,excl)/videoVideo media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [ref]URL pointing to media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [region]Screen part to playv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [begin]Begin time to start play media item, relative to timebasev1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [end]End time of media item, relative to media item startv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [dur]Duration of media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [repeatCount]Number of times to repeat media item (also “indefinite”)v1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/video [repeatDur]Total duration to repeat media item (also “indefinite”)v1.0.0Media Objects - videos, images, HTML5
par/video [begin(wallclock)]Begin playback at specified wallclock timev1.0.0Playback scheduling via WallClock
par/video [end(wallclock)]End playback at specified wallclock timev1.0.0Playback scheduling via WallClock
excl/video [begin(wallclock)]Begin playback at specified wallclock time, interrupt peersv1.0.0Playback scheduling via WallClock
excl/video [end(wallclock)]End playback at specified wallclock time, resume peersv1.0.0Playback scheduling via WallClock
(seq,par,excl)/imgStill image media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [ref]URL pointing to media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [region]Screen part to playv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [begin]Begin time to start play media item, relative to timebasev1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [end]End time of media item, relative to media item startv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [dur]Duration of media itemv1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [repeatCount]Number of times to repeat media item (also “indefinite”)v1.0.0Media Objects - videos, images, HTML5
(seq,par,excl)/img [repeatDur]Total duration to repeat media item (also “indefinite”)v1.0.0Media Objects - videos, images, HTML5
par/img [begin(wallclock)]Begin playback at specified wallclock timev1.0.0Playback scheduling via WallClock
par/img [end(wallclock)]End playback at specified wallclock timev1.0.0Playback scheduling via WallClock
excl/img [begin(wallclock)]Begin playback at specified wallclock time, interrupt peersv1.0.0Playback scheduling via WallClock
excl/img [end(wallclock)]End playback at specified wallclock time, resume peersv1.0.0Playback scheduling via WallClock
(seq,par,excl)/audioAudio media itemNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [ref]URL pointing to media itemNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [region]Screen part to playNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [begin]Begin time to start play media item, relative to timebaseNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [end]End time of media item, relative to media item startNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [dur]Duration of media itemNot supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [repeatCount]Number of times to repeat media item (also “indefinite”)Not supportedMedia Objects - videos, images, HTML5
(seq,par,excl)/audio [repeatDur]Total duration to repeat media item (also “indefinite”)Not supportedMedia Objects - videos, images, HTML5
par/audio [begin(wallclock)]Begin playback at specified wallclock timeNot supportedPlayback scheduling via WallClock
par/audio [end(wallclock)]End playback at specified wallclock timeNot supportedPlayback scheduling via WallClock
excl/audio [begin(wallclock)]Begin playback at specified wallclock time, interrupt peersNot supportedPlayback scheduling via WallClock
excl/audio [end(wallclock)]End playback at specified wallclock time, resume peersNot supportedPlayback scheduling via WallClock