Skip to main content
Version: 4.0.1

Supported SMIL Features

Smil standard
w3c docs

Sections​

SMIL Media Objects​

A-smil reference

  • All media objects are supported except <audio> — see Not supported below.
  • Scrolling text is supported via the ticker element (see the Ticker guide).
  • Src can be specified with relative path or absolute path. If relative path is specified smil player will combine it with actual path to smil file to get absolute one.
  • Duration is specified in seconds, either with s string or without. Or indefinite string.

Our changes/limitations​

  • z-index can be specified directly on element (images, widgets, tickers — not videos, which render on the native video plane) — see z-index.

Example​

<ref src="http://server/index.html" type="text/html" dur="indefinite" />
<video src="ad1.mpg" dur="5" />
<img src="https://some-server.com/ad2.jpg" dur="5s" />

SMIL Playlists​

A-smil reference

  • seq, par, excl and priorityClass are supported. Deviations from the standard: excl relies on its priorityClass children for exclusivity (its own begin/repeatCount are ignored — wrap it in a par), the priorityClass defaults differ (see the Priority guide), and audio is not played.

SMIL Scheduling​

A-smil reference

  • All tags are supported and behave by standard specification.

Layout​

A-smil reference

  • We are using layout by standard specification.
  • Dimensions and positions can be specified by absolute value or by percentages which are computed from display resolution.
  • region name is specified by regionName or xml:id attribute

Our changes/limitations​

  • we use region definition to specify if content in that region should be synchronized or not = sync="true"
  • for triggers we use nested regions. See example below or our docs. But basically region has several nested regions, with dimensions derived from parent region and the trigger is dynamically assigned to one of the free nested regions. If none is free, trigger will be assigned to the first one.
  • fit values (fill/meet/meetBest/cover) are documented in full in fit.

Example​

<region regionName="bottom" left="0" top="1574" width="1080" height="346" z-index="2" sync="true" backgroundColor="#ffffff"/>
<region regionName="main" left="0" top="0" width="1080" height="1920" z-index="1" backgroundColor="#ffffff"/>
<region regionName="trigger" left="0" top="0" width="1080" height="1920" z-index="0" backgroundColor="#ffffff">
<region regionName="fullScreenTrigger" left="0" top="0" width="1080" height="1920" z-index="0" backgroundColor="#ffffff"/>
</region>

Interactivity​

A-smil reference

  • For interactivity, we use functionality called triggers. Currently, we have keyboard, mouse/touch, widget-emitted, nexmosphere RFID sensor, and sync failover triggers, plus network-driven dynamic playlists (emitDynamic).
  • We handle triggers completely differently than the a-smil standard — see the Triggers overview.

Video input​

A-smil reference

  • We do not use this functionality; you can specify video input by URL (relative or absolute), by stream URL, or by HDMI input URL — see Streams and Video Inputs.

Linking SMIL​

A-smil reference

  • Not supported.

Screen on/off​

A-smil reference

  • Not supported.

Sync Playback​

A-smil reference

  • Handled differently, via an ACK-based coordination protocol. With syncServerUrl configured the devices coordinate through a sync server (applet-synchronizer); without it they use local-network peer-to-peer. syncGroupName is required.
  • The setup has several moving parts — see Playback Synchronization for the full walkthrough.
  • Which media should be synced among devices is specified in the region definition (see the layout section). All content within such a region will be synchronized.

AnyTiles​

A-smil reference

  • Not supported.

Pull mode​

A-smil reference

  • We are using pull mode by standard specification.

Our changes/limitations​

All <meta>-level update-control attributes (onlySmilUpdate, checkBeforePlay, checkAheadCount, contentRefresh, smilFileRefresh, fallbackToPreviousPlaylist, timeOut, skipContentOnHttpStatus, updateContentOnHttpStatus, skipPlaybackOnHttpStatus, defaultRepeatCount, defaultTransition, reportFileLimit), the per-element update attributes (updateCheckUrl, updateCheckInterval, allowLocalFallback), and the per-element playability gate (playCheckUrl, playCheckSkipOnError) are documented in full in the <meta> Attribute Reference and the Element Attribute Reference.

Example​

<meta http-equiv="Refresh" content="10" onlySmilUpdate="true"/>
<meta http-equiv="Refresh" content="60" contentRefresh="120" smilFileRefresh="30" fallbackToPreviousPlaylist="true"/>

Prefetch​

A-smil reference

  • We don't use this tag during SMIL processing.

Reporting​

A-smil reference

Example​

<meta log="true" />
<meta log="true" type="manual" endpoint="https://custom.endpoint.com/reports"/>

Wallclock​

A-smil reference

  • We are using wallclock by standard specification. See docs or tests in playlistWallclock.spec.ts for details.

Our changes/limitations​

  • only supported periodical attribute is P1D (once a day).

Transition​

A-smil reference

  • We are using transition by standard specification

Our changes/limitations​

  • supported transitions are crossfade (images and widgets) and billboard (images only) — see the Transitions guide.
  • transition name is specified by transitionName or xml:id attribute.
  • a playlist-wide default can be set with defaultTransition.

Conditional play​

A-smil reference

  • Conditional expressions are fully supported. Simple as well as nested ones. For more details see test files conditionalSimple.spec and conditionalAdvanced.spec

Our changes/limitations​

  • &lt; and &gt; does not have to be encoded, you can use directly <, >
  • adapi- prefix is not necessary in conditional attributes.

Not supported​

<audio> playback​

The <audio> tag is not supported by signageOS SMIL Player. Audio elements are parsed and their files are downloaded into storage, but they are never played — playback silently skips them. The playback functionality is coded, but it's commented out due to interaction with the audio of videos. Avoid <audio> elements in production playlists; their files only consume bandwidth and device storage.

<audio src="music.mp3" />

Sound Volume Control (soundLevel)​

The soundLevel attribute is not implemented — it has no effect on playback volume for any media type.

<video src="ad1.mp4" soundLevel="20%" />

Video layering​

  • you cannot layer videos on top of each other