Introduction to signageOS SMIL Player
signageOS has implemented a well-known standard for playlist definition - SMIL, based on the "a-smil" version. This universal SMIL player allows anyone to define a standardized playlist and then submit the URL where the playlist definition is located.
The signageOS SMIL player will get the playlist, store it internally, cache all files and widgets, and begin with the playback.
Main benefits
- Using standardized playlist and player removes the burden of "re-inventing the wheel" for common use cases
- SMIL playlist supports all possible features and scenarios you might need - zones, regions, scheduling, layouts, priority playback, triggered playback, sensors, web widgets, and conditional playback, etc.
- SMIL Player is open-sourced (MIT), you can freely adjust it if you need additional features
- SMIL Player is optimized to run smoothly on all supported devices
tip
From our experience, building a similar Player requires 8-12 months to reach the point where it has all the features and the Player is robust enough to be deployed in a large scale (tens of thousands of devices).
By using the already existing SMIL Player, you save this time and resources which you can allocate to the features of your CMS system.
How the SMIL playlist looks like
Sample SMIL playlist definition
<smil>
<head>
<layout>
<root-layout width="1080" height="1920" backgroundColor="#FFFFFF" /> <!-- define regions/zones -->
<region regionName="main" left="0" top="0" width="1080" height="1920" z-index="1"
backgroundColor="#FFFFFF" />
</layout>
</head>
<body>
<par>
<!-- define what should be played in regions -->
<seq repeatCount="indefinite"> <video
src="https://demo.signageos.io/smil/samples/assets/landscape1.mp4"
region="main"></video> <img dur="5s"
src="https://demo.signageos.io/smil/samples/assets/landscape2.jpg"
region="main"></img> </seq>
</par>
</body>
</smil>
Documentation map
- Getting Started — build the applet, deploy it to a device, and play your first SMIL playlist.
- Layout & Playlists — regions,
seq/par/exclplaylist structure, random order, priority playback, transitions. - Media Types — videos, images, widgets, websites, streams/inputs, and tickers.
- Scheduling — wallclock time windows and conditional playback expressions.
- Triggers — keyboard, mouse/touch, widget, and sensor-driven interactivity.
- Synchronization — multi-device sync, dynamic synchronization, and trigger failover.
- Content Management — update detection, check-before-play, the playability gate, caching, and backup image.
- Reporting — setting up proof-of-play and event reporting.
<meta>Attribute Reference — every<meta>tag attribute.- Element Attribute Reference — attributes accepted on playlist elements (
video,img,ref, etc.). - Applet Configuration Reference — every Timing Configuration option.
- Reporting Events & Payloads — event types and JSON payload shapes.
- Supported SMIL Features — compliance matrix against the a-smil standard.