CUEDRIFT
macOS · free 7-day trial

Playout that never
flashes black.

Cuedrift is a minimal, reliable video player for live productions. Queue a playlist, punch it to your program display, and trust every clip to end exactly how you told it to.

Playlist
03
sponsor_loop_v2.mov
on end · loop this clip
04
keynote_open.mp4
on end · play next clip
next
05
walkout_XDCAM.mxf
remuxing via ffmpeg…
MXF
06
stage_end_card.png
on end · hold last frame
end card
Output — Display 2
Program · full screen
0:08

borderless · above the Dock & menu bar · ignores clicks

Why it exists

Built from the operator's chair, not a spec sheet.

Every feature here answers a specific, recurring annoyance from running video playout during an actual live show — not a checklist someone drew up in advance.

01

Per-clip end behavior

Hold last frame, loop, auto-advance, or show a dedicated end-card image — set individually on every row, not as one global rule.

02

True program output

The output window sits at the system-maximum level on your chosen display — above the Dock, menu bar, and Notification Center. Nothing macOS draws punches through it.

03

Live status page

A built-in HTTP server pushes clip name, progress, and a synced countdown to any phone or stage monitor on the network — over Server-Sent Events, no polling lag.

04

Optional live preview

Stream a low-res JPEG copy of the actual output picture to the status page — a monitoring feed for "what's about to go out," toggled off by default to save CPU.

05

Stream Deck & Companion

Plain HTTP endpoints for GO, stop, next/previous, and output toggle — wire them into Companion's Generic HTTP module with no custom module to install.

06

MXF that just plays

AVFoundation can't demux MXF at all. Cuedrift remuxes or transcodes automatically on import and caches the result, so re-adding a file is instant.

07

Playlists as plain JSON

Clip paths, on-end actions, and end-card references save to a readable JSON file — easy to diff, version, or hand-edit between shows.

08

Optional control token

The read-only status page needs no auth; the control API can require a shared token so only your Stream Deck can trigger GO on the trusted venue network.

09

10Hz internal clock

The countdown — in the app and on the status page — is driven by the same clock, not a client-side timer that drifts out of sync over a long show.

For the floor

One URL, live on the network.

Turn on the status page and open it on a phone, a tablet taped to a podium, or a stage monitor. A floor manager sees exactly how much time is left without leaning over the operator's shoulder.

192.168.1.42:8787
walkout_XDCAM.mov live
1:422:38 total
0:08
  • Clip & state, liveName, playing / paused / idle / ended, and the next clip when the current one auto-advances.
  • Big final-10 countdownThe readout switches from "M:SS left" to large pulsing red digits for the last ten seconds — the same cue the operator sees.
  • Auto-reconnectingA green "Live" / red "Disconnected" indicator; the page recovers on its own if the Mac sleeps or the Wi-Fi blips.
  • JSON at /statusThe same live data as plain JSON, for piping into anything else you run on the network.
Hardware control

Drive it from a Stream Deck.

No dedicated Companion module needed — every endpoint is plain HTTP GET, so Companion's built-in Generic HTTP module, a browser bar, or curl all work identically. Clips are addressed by playlist position, since a clip's internal ID is a fresh UUID every launch.

EndpointEffect
/control/go?index=NSelect clip N and play it immediately — the GO button.
/control/select?index=NSelect clip N without playing it.
/control/stopStop and reset to the beginning.
/control/playpauseToggle play/pause on the current clip.
/control/next / previousMove the selection by one, without playing.
/control/output/toggleToggle sending video to the output display.
/playlistJSON list of {index, name} — build your Companion buttons from this.
/statusSame live JSON the status page uses — wire up button color or text feedback.
Codec handling

ProRes plays natively. MXF just works too.

AVFoundation decodes ProRes directly — nothing special needed. MXF is a container AVFoundation can't demux at all, whatever codec is inside, so every import runs the same fallback chain:

1

Try it as-is

The fast path — covers .mov, .mp4, ProRes, H.264, and HEVC directly.

2

Remux, don't re-encode

If that fails — currently any .mxf — Cuedrift remuxes into .mov via ffmpeg -c copy: a lossless container swap, seconds not minutes. Covers ProRes-in-MXF, DNxHD-in-MXF, and similar.

3

Transcode as last resort

If the codec inside still isn't something QuickTime accepts — MPEG-2 XDCAM, uncompressed — it transcodes to ProRes HQ. Results are cached by source path, so re-adding a file skips straight to ready.