DearScenario
← All Guides
DearScenario Player Guide

Trigger Video Playback from QLab Using OSC

QLab is already the timeline for your show — lighting, audio, projection. This guide adds video playback to that timeline by sending OSC cues from QLab to a DearScenario Player node on the network.

Why use DearScenario Player with QLab?

QLab has its own video playback engine, but it runs on the same Mac that manages your cue list. In exhibition and installation contexts, you often need video playing on a separate machine — a PC in a rack, a Raspberry Pi behind a screen, or multiple displays across a venue. DearScenario Player provides the remote player; QLab provides the timeline and cue logic.

Setup overview

  1. DearScenario Player node: Running on the playback machine (Windows or Raspberry Pi), connected to the display; set network.enable_osc to true and restart the player
  2. QLab Mac: On the same network, sending OSC cues to the node’s IP and port
  3. Media files: Stored locally on the playback machine (DearScenario Player plays local files, not streamed from the Mac)

1. Configure the OSC destination in QLab

  1. Open Settings → Network in QLab
  2. Under Network Cue Destination Patches, add a new patch
  3. Set Destination to the DearScenario Player machine’s IP address (e.g., 192.168.1.100)
  4. Set Port to 18290 (DearScenario Player’s default port)
  5. Set Type to UDP
  6. Name it something clear, like DearScenario Player Node 1

2. Create OSC cues

Add a Network cue in your cue list. Set it to use the DearScenario Player destination patch you just created, then configure the OSC message.

Play a full cue in one message

Load, cue point, loop policy, and automatic playback in a single OSC message:

FieldValue
OSC Address/player/play_media
Argument 1C:\media\scene_opening.mp4 (string)
Argument 230.0 (float) — cue position in seconds
Argument 30 (int) — loop off (1 = loop on)

Pre-load without playing

FieldValue
OSC Address/player/prepare
Argument 1C:\media\scene_opening.mp4 (string)
Argument 20.0 (float)
Argument 30 (int)

Then fire /player/play when the show is ready.

Start / pause / stop

OSC AddressArgumentsAction
/player/playnoneStart or resume
/player/pausenonePause
/player/stopnoneStop and unload
/player/cuenoneReturn to cue point, stay ready

Volume and seek

OSC AddressArgumentAction
/player/volume0.7 (float)Absolute volume 0..1
/player/seek_sec45.0 (float)Seek to seconds

3. OSC address reference

DearScenario Player listens for OSC on port 18290. Only the short /player/<action> root is supported.

OSC AddressType tagsAction
/player/play_medias, sfi, or siiLoad and play (atomic cue)
/player/prepares, sfi, or siiLoad and leave ready/paused
/player/play—Play current media
/player/pause—Pause
/player/cue—Return to cue point
/player/stop—Stop and remove media
/player/seek_secfSeek to time in seconds
/player/volumefSet volume (0.0 – 1.0)
/player/muteiMute (1) or unmute (0)
/player/loopiEnable (1) or disable (0) looping

Removed addresses

Legacy long-root and load / seek / seek_abs OSC addresses are no longer supported. Use prepare / play_media and seek_sec instead.

4. Example cue list structure

Cue 1   [Network]  /player/play_media   "C:\media\welcome.mp4"  0.0  1
        ── lobby loop runs immediately ──
Cue 10  [Network]  /player/play_media   "C:\media\main_show.mp4"  30.0  0
        ── main show starts at 30s, no loop ──
Cue 20  [Network]  /player/play_media   "C:\media\exit.mp4"  0.0  0

Each network cue fires one OSC message. QLab handles timing and grouping; DearScenario Player handles video output on the remote display.

5. Multi-node setups

Create a separate destination patch per DearScenario Player node (each has its own IP). Group cues that should fire together using QLab’s Group Cue with auto-follow.

Tips

  • Prefer play_media over load+wait+play: One message expresses source, cue point, loop, and automatic playback—no blind delay between load and play
  • Test the network path: curl http://192.168.1.100:18290/api/status from the Mac
  • Media paths are on the player machine: Copy files to the playback machine in advance
  • OSC is fire-and-forget: HTTP from a Script cue can confirm validation and queue admission. To verify loading or playback, also inspect GET /api/status.

Next step: For a compact playback node behind each screen, see how to build a Raspberry Pi video player.