RCWeb YouTube Display

The RCWeb YouTube Display (app/youtube) is the big-screen half of the RCWeb YouTube player. It is designed for a TV, projector, monitor, kiosk browser, or any shared display in an RCWeb room.

Icon

icon

Overview

This app turns the browser into a room-controlled YouTube screen. The display shows an embedded YouTube player full screen, presents a QR code for phones to join as controllers, and receives playback commands from one or more youtube-control apps in the same virtual room.

The viewer is intentionally simple on the main screen: video first, with optional title, QR code, and diagnostics overlays controlled remotely.

How to use

  1. Open /youtube/ on the display browser.
  2. Scan the QR code with a phone, or manually open /youtube-control/?r=<room> on another browser.
  3. Paste YouTube links into the control app to build the queue.
  4. Use the phone controls to play, pause, seek, skip, reorder, loop, mute, or change volume.
  5. Tap the viewer screen to toggle fullscreen.

If the browser blocks automatic YouTube playback, the display shows an Enable playback button. Pressing it gives the page the local user gesture browsers require before video playback can start.

Display features

  • Plays YouTube videos through the YouTube iframe player.
  • Shows a QR code that opens the matching youtube-control app in the same room.
  • Can hide or show the title overlay, QR code, and stats overlay.
  • Supports play, pause, seeking, previous, next, rewind, and fast-forward commands.
  • Supports queue playback, item selection, item removal, queue clearing, and drag-reordered playlists.
  • Supports loop off, loop playlist, and loop current item.
  • Supports mute and volume control from the control app.
  • Shows Stats for nerds diagnostics when enabled, including room, WebSocket status, client count, player state, queue state, current video ID, loading, quality, audio, and loop mode.

Multiple viewers

Several youtube display browsers can run in the same RCWeb room. The control app targets all youtube viewers while excluding youtube-control clients, so every viewer receives the same commands.

When a new viewer opens, it asks existing viewers and active controllers for the current queue and playback state. This lets a refreshed or newly opened display rejoin the room without forcing users to rebuild the playlist.

The viewers also coordinate playback state so displays in the same room stay aligned without competing for control.

Playlist state

The display keeps the active queue, current item, position, loop mode, audio state, and overlay state as room state. Controllers can also download the playlist as JSON and later import it again.

The display stores room state locally as a fallback, but it starts on the QR/control-ready screen instead of trying to immediately autoplay restored video. This avoids the common browser restriction where media playback is blocked until a local interaction occurs.

How RCWeb makes it possible

RCWeb gives every browser tab a room, app name, and client ID, then connects clients in the same room over WebSocket. The display and controller are just separate RCWeb apps that exchange JavaScript function calls through comms.js.

The display app exposes functions such as queue updates, playback controls, display toggles, audio controls, and state requests. The control app sends commands to the target youtube!*-control, which reaches all youtube viewers in the room while excluding controller apps.

The same mechanism also works in reverse: displays publish state snapshots to youtube-control, and controls can answer a restarted viewer with the last queue state they saw. This room-based messaging is what lets multiple phones and multiple displays cooperate without a backend playlist database.

Related app

Use this app with RCWeb YouTube Controls (app/youtube-control).

DocumentationServer TelemetryServer StatsServer HTTP LogServer WebSocket Log