Skip to main content

Embedding streams and video

The Embed Stream / Video component puts a live web page inside your display. It is a browser frame: the provider draws its own content into the box you place on the canvas.

Typical uses:

  • a live stream of the feature table on the wall behind it
  • the sports everyone would otherwise be watching on their phones
  • a sponsor loop or a promo video between levels
  • an external scoreboard, league table or shot clock the club already runs

The point of the component is not just that a video plays. It is that whoever is running the tournament can swap what it shows from the display itself, mid-tournament, without opening the designer — and every connected screen follows.


Adding one

Drag Embed Stream / Video onto the canvas. It lands as a 16:9 box, because that is the shape almost every video ends up being, and shows a Set Content button.

The Embed component freshly dropped, showing a video icon and a Set Content button

Pressing it opens the content dialog. The same dialog is behind Change Content in the settings panel, and behind the button on the running display — there is only one place to learn, wherever you came from.

The Embedded Content dialog with a YouTube link recognised

Paste a link and the dialog tells you immediately what it made of it: which provider it recognised, and the actual embed URL it will load. A link it cannot use is rejected there and then, with the reason — you do not have to save the design and open a display to find out.


What you can paste

The dialog's What you can paste section, listing YouTube, Twitch, Vimeo and Kick

YouTube

Paste the link exactly as it comes out of the address bar or the Share button. All of these work:

You haveExample
A normal watch linkhttps://www.youtube.com/watch?v=dQw4w9WgXcQ
A share short linkhttps://youtu.be/dQw4w9WgXcQ
A start time on either…?v=dQw4w9WgXcQ&t=90 or &t=1m30s
A live streamhttps://www.youtube.com/live/<id>
A shorthttps://www.youtube.com/shorts/<id>
A playlisthttps://www.youtube.com/playlist?list=<id>
A channel's live page, by channel idhttps://www.youtube.com/channel/UC…/live
Just the video iddQw4w9WgXcQ
One YouTube link cannot be converted

A channel live link written with an @handleyoutube.com/@somechannel/live — cannot be turned into an embed. Working out which video that handle is currently streaming requires a YouTube API lookup that the display does not make.

Open the stream in a browser and copy the link from the address bar instead: while a channel is live, that gives you a normal watch link, which works.

Twitch, Vimeo and Kick

Paste the channel, video or clip link and it is converted the same way:

ProviderWorks with
Twitchtwitch.tv/<channel>, twitch.tv/videos/<id>, clip links, chat embeds
Vimeovimeo.com/<id>, including the privacy hash of an unlisted video
Kickkick.com/<channel>
Twitch and your domain

Twitch refuses to play unless the embed names the site it is playing on. UHT fills that in for you from the address the display is running at, so a Twitch embed works on uht.app and on a locally hosted copy alike, with nothing to configure.

Everything else

Any other link is used exactly as given. That means it has to already be an embeddable link — for most sites the page you are looking at and the page that can be embedded are two different URLs, and only the second one works. Look for Embed, iframe or Share on the provider's own page.


Playback options

OptionWhat it does
Start playing automaticallyBegins as soon as the display opens.
MutedLocked on while autoplay is on — see below.
Repeat when finishedRestarts the video at the end.
Show player controlsShows or hides the provider's own control bar.
Privacy-enhanced modeYouTube only: loads from youtube-nocookie.com.

Both of the options with a ? beside them are worth reading:

Muted. Browsers refuse to play sound that starts on its own. An embed set to autoplay therefore has to be muted, or it stops on its first frame and looks broken. Turn autoplay off if you want sound, and start the video from the display. Remember that the display is also playing the tournament's own level sounds and announcements, which an unmuted embed competes with.

Privacy-enhanced mode. Loads the video from youtube-nocookie.com. YouTube then stores no personalised tracking cookies on the display until somebody actually starts the video, which is what makes an embed easier to justify under GDPR in a public venue. Playback is identical; only the recommendations at the end of a video are less personalised.

These options are honoured by the providers listed above. A generic embed link keeps whatever behaviour its own URL asks for.


Settings

The Embedded Content settings panel

Beside the content itself, two switches control how the embed behaves on a display:

  • Allow interaction on the display — off makes the embed click-through, so a stray tap on a touchscreen cannot pause the stream. Worth turning off for a screen mounted where people brush past it.
  • Change button on the display — whether the Change Content button appears at all. Turn it off for a display nobody should be reconfiguring.

Changing the content during a tournament

Hover the component on a running display and a Change Content button appears in the middle of it.

A video playing on a live display with the Change Content button revealed over it

It opens the same dialog. Whatever you paste replaces the content immediately.

Two things about this are deliberate:

  1. The design is not modified. The new link is stored with the tournament, not with the design. Your saved design still holds the content you built it with, and the next tournament that uses it starts from that again. It also means the change survives a reload of the display.
  2. It is a controller-only button. In multi monitoring it appears on controller devices only. Whoever is running the tournament decides what every screen shows; a player who has opened the display link on their phone cannot change it.

Across multiple screens

WhatBehaviour
Changing the contentApplied to every connected display at once.
A display that connects laterPicks up the current content by itself.
YouTube play / pause / positionMirrored, so every screen shows the same moment.
Any other providerEvery screen plays the same link independently.

The last row is a limit of the web, not of UHT: a provider's player runs inside its own frame and cannot be driven from outside it. YouTube is the exception because it publishes an API for exactly this. For a live stream it makes no practical difference — every screen is showing the same live moment anyway.


If the display stays blank or white

This is the one problem worth knowing about in advance, because it looks like a bug and is not one. If the component stays empty after you apply a link, it is one of two things:

  1. The link is not an embeddable one. For most sites the page URL and the embed URL are different, and only the embed URL works.
  2. The provider blocks embedding. Many news sites, social networks and shops send a header that forbids their pages being shown inside another site. The browser refuses the frame; no setting in UHT can override that, and none should be able to.

To tell them apart: open the link in a normal browser tab. If it works there but not in the display, it is case 2 — look for an Embed option on the provider's own page, and use the link it offers. If there is no such option, that provider cannot be embedded at all.


Layout note

Unlike every other component, an embed is drawn on top of the rest of the design. A browser frame cannot be layered into the drawing the way a shape or a text component can.

In practice that means anything which must stay readable belongs outside the embed's area, and a background behind it is only visible while it has no content.


Next