Nubart SYNC

NUBART SYNC VIDEO INTEGRATION

Service: Nubart SYNC — Direct Video Position Integration

Document version: 2.0

Author: Simon Effing

Date: 9 August 2026

Technical / integration partner reference. This page is not indexed and not linked from public navigation. It documents direct, code-level integration with Nubart SYNC's video-position sync endpoint, intended for developers and AV integrators building a custom player. If you're deploying to a BrightSign player, use the standard BrightSign Instructions guide instead — this document is for players that need a lower-level integration.

1. OVERVIEW

If your video player doesn't support browser-based playback, you can integrate video position synchronization directly into your player's JavaScript code by reusing the sendVideoPos function from the generated script.

If your player cannot be programmed with JavaScript at all, you can use as a blueprint the generated HTML file on your Nubart platform:

Button to download the player script in the Nubart SYNC video instances table

Just reimplement the same request pattern in whatever language or scripting environment your player does support.

2. INTEGRATION STEPS

2.1 Copy the sync function

Open the generated HTML file and copy everything between the markers:

========== COPY FROM HERE ==========

and

========== COPY TO HERE ==========

into your player's JavaScript. This gives you sendVideoPos() and a playerId for this session. Deciding when to call it is entirely up to your integration.

2.2 Call the function on playback start

sendVideoPos(currentVideoTime);

The position is in seconds, as a decimal number.

2.3 Keep the position up to date

How you obtain the current position depends on your player — an event it fires, a polling loop, a timer, or a callback from its playback API. The goal is simply that the sync endpoint never has a position that is more than about 10 seconds stale.

A straightforward approach that works in most environments:

  • Poll every 10 seconds during playback and call sendVideoPos() with the current position.
  • Also call it on transport events — playback start, resume after pause, seek, and loop or restart — since these change the position discontinuously and shouldn't wait for the next poll.

IMPORTANT: The exact interval is not critical. As long as the video runs continuously, our server extrapolates the current position from the last one it received, so a longer interval — or an occasional missed update — makes no practical difference. What matters is that a new position is sent whenever playback jumps, which is why the transport events above are worth wiring up if your player provides them.

If your player exposes no transport events at all, the periodic poll alone is sufficient; sync will simply take up to one interval to catch up after a jump.

Make sure whatever drives the polling keeps running across loops and restarts.

2.4 Optional: handle sync status

sendVideoPos(currentVideoTime, function(status) {
  if (status === 200) {
    console.log("Sync successful");
  } else {
    console.log("Sync failed with status: " + status);
  }
});

RELATED: The customer portal's "Sync status" indicator (on the Nubart SYNC tab) reflects how recently sendVideoPos() was last successfully called for a given video. It updates purely from what your player reports here — it is not affected by whether any listener's phone is connected or playing audio.

3. NOTES

  • Each generated HTML file contains credentials for exactly one video instance.
  • The playerId is generated automatically when the page loads and remains constant for that session.