Cue Media Server · console guide

The Cue console, page by page for engineers moving their streams from another media server

Cue keeps the addresses your encoders and players already use, so most of switch day happens without you. This guide is for everything after it: where the console lives, how you sign in, what each page does, and which habit from your previous server each one replaces. Labels in boxes, like Switch to Cue, are exactly what the console prints.

Written from the console's own code Windows Server and Linux
Contents

01 What Cue changes, and what it doesn't

Cue Media Server is the streaming engine we write ourselves. It runs as a service on your dedicated server, in place of the streaming server you ran before, and it is built to answer the outside world the way that server did. Nothing that talks to your server should need reconfiguring.

Kept as it is

  • Applications and stream names. Each application or stream on your previous server becomes a Cue application with the same name. Encoders publish to the same application and stream names they use today.
  • Publishing credentials. The importer reads the publishing passwords from your previous server's configuration, so encoders sign in with the passwords they already hold. Where a password genuinely cannot be read, a new one is made and shown once, and the import result says so.
  • Publishing addresses. RTMP on port 1935 with the usual user-and-password sign-in exchange, the _definst_ and app/stream spellings, and rtmp://your-server/static with <name>?password= as the key where your channels were published that way.
  • Player addresses. /<app>/<stream>/playlist.m3u8 (with or without _definst_, and ?DVR for rewinding), smil: and ngrp: adaptive addresses, and manifest.mpd; and /<name>/index.m3u8, video.m3u8, mono.m3u8, embed.html, preview.jpg and the archive and timeshift addresses.
  • The tools around the engine. Cue also answers the management APIs your existing tools and control panels (MediaCP included) may already use, with the same credentials, along with the on_play/on_publish authorization backends and event_sink webhooks they call. Signed playback links your website already makes keep validating when you give Cue the same shared secret.

New with Cue

  • One web console on port 8443 in place of your previous server's manager, covering applications, encoders, players, security, recordings, restreaming, imports, graphs, logs, users and updates.
  • Every ingest on every application: RTMP, RTMPS, SRT with encryption, WebRTC (WHIP), RTSP publishing, and pulls from RTSP cameras, SRT, HLS, MPEG-TS over UDP or HTTP and other RTMP servers, with up to four backup sources that take over automatically.
  • Every output from every application: HLS (MPEG-TS, fMP4/CMAF or Low-Latency), MPEG-DASH, WebRTC (WHEP), RTMP and RTMPS, SRT, RTSP and MPEG-TS over HTTP, plus a hosted player page and embed code.
  • ABR ladders on the processor, on an NVIDIA card (NVENC) or on Intel Quick Sync on Linux, with logo, deinterlacing, aspect and audio controls.
  • SCTE-35 handling end to end: cues from SRT, MPEG-TS and RTMP become HLS ad markers on segments cut at the splice point, and you can insert a break yourself through the API.
  • Signed, verified updates you schedule from the console, a free Let's Encrypt certificate for your server's name, two-factor sign-in and scoped API tokens.

What does not carry over today, and the importer tells you per application: video-on-demand applications (the VOD library comes later), edge/repeater applications (import the origin instead), first-generation secure tokens, more than five stream targets per application, and stream targets that are not RTMP. Transcoder templates are not read: an application that had the transcoder on gets Cue's HD ladder instead, which you can change.

02 Switch day

We do the move. Before your switch time, Cue is installed next to your current engine and your applications are imported. In that state the old engine still owns ports 1935, 80 and 443 and serves every viewer, while Cue answers on port 1936 for publishing and playback tests and on 8443 for its console. That window is the best time to learn the console: sign in, look at your imported applications, and if you like, point a spare encoder at port 1936 and watch it on the application's preview.

At the agreed time we press Switch to Cue on the console's Server page. The console warns that your old engine "is stopped and disabled, and Cue takes port 1935 (and 80/443 if nothing else uses them)". Encoders reconnect by themselves and players retry; the interruption we plan for is one to five minutes. If Cue does not come up, the old engine is started again automatically.

Your old engine stays installed, stopped and disabled. The Server page then offers a button to switch back to it, which takes about a minute. Tell us before you use it, so we can look at whatever made you want to.

Watchdogs. If anything on the server restarts the old engine on its own, such as a scheduled task that restarts it, it would take port 1935 back after the switch. We look for these before switching; if you added one yourself, tell us.

03 Signing in to the console

  1. Open https://your-server:8443/classic/ in a browser. Use the server's IP address or a DNS name that points at it.
  2. The first time, the browser warns that the certificate is not trusted. That is expected: until your server has a name with a Let's Encrypt certificate (see Settings), Cue protects the console with a certificate it made itself. The connection is still encrypted. Accept the warning for this address and go on.
  3. At Sign in to manage this server. enter the user name and password. The administrator account is admin unless we agreed another name with you.
  4. If two-factor sign-in is on for your account, a third field appears: Code from your authenticator app (or a recovery code).

Your password

We never send passwords by email. Before the switch we send you a secure link through which you set the administrator password yourself. After that you can change it at any time under Settings › Your password; a new password needs 10 characters or more.

Lost it? Ask us and we will reset it. If you are an administrator on the server itself, you can also print a new one there (see On the server).

Two-factor sign-in

  1. Go to Settings, find Two-factor sign-in and press Turn on.
  2. Add the key it shows to an authenticator app (Google Authenticator, 1Password, Authy and the like), or use Copy otpauth link with an app that takes such links.
  3. Enter the code the app shows and press Turn on. The console then shows your recovery codes once. Each signs you in once if you lose the phone; keep them somewhere safe.

More people, and programs

Under Settings, Users lists who can sign in. Add user makes an Administrator (changes everything) or a Read-only user (sees everything, secrets stay hidden, changes nothing); the new password is shown once for you to pass on. API tokens are for scripts, panels and WebRTC encoders and players: see APIs.

If your licence also includes the Cue Reseller Panel, https://your-server:8443/ (without /classic/) opens the panel instead. See chapter 15.

04 A tour of the console

The header carries five pages: Applications, IPTV, Server, Logs and Settings. IPTV shows only while the IPTV service is part of your server. Pages refresh themselves every few seconds, so you can leave one open on a wall screen.

Applications

The list shows each application with a thumbnail while it is live, how long it has been live (or whether publishing is password-protected or open), its viewers, and a status: Live, Waiting for encoder or Stopped. New application asks for a name (letters, digits, dots, - and _), whether to Require a password to publish, and Maximum viewers; the publishing password is then shown once. Import reads your previous server's configuration (see what an import carries). When an update is available, a notice here links to the Server page.

An application's page

Click an application to open it. From top to bottom:

  • The header: the status, Stop/Start (stopping disconnects the encoder and ends the stream for viewers) and Delete, which removes the application, its address, its password and its recordings for good.
  • Four figures: viewers now, most at once, sent since start and live for.
  • Viewers and traffic: two graphs, over 6 hours, 24 hours, 7 days or 30 days.
  • Connect your encoder: the RTMP server, RTMPS when the server has HTTPS playback, the stream name, the user name, and SRT, WebRTC (WHIP) and RTSP addresses. See chapter 5. For an application that pulls its stream, this card is Source instead.
  • Watch: a live preview, the renditions line, any SCTE-35 cues, every playback address and the embed code. See chapter 6.
  • Who may watch and Authorization backend: see chapter 11.
  • Streams from elsewhere: cameras and other servers read under their own stream names (stream files or inputs on your previous server).
  • Restream and Webhooks: see chapters 9 and 13.
  • Picture and sound: logo, deinterlacing, shape, encoder hardware and preset, volume and audio track for the renditions (shown when the server can transcode).
  • Settings: viewer limit, segment length, RTMP playback, HLS packaging, DASH, the audio-only variant, the ABR ladder, ad markers, recording, DVR and the HLS and DASH delivery options.
  • Recordings: every recorded broadcast, with play, download and clip tools.

Server

Figures for the whole machine (live streams, viewers, applications, data sent and received since start), then Engine version, Running for, Load, Memory, Disk, Processor threads and Transcoding, which says where renditions are made: NVIDIA NVENC (with each card's encoder sessions), Quick Sync, or the processor. Below are the server-wide graphs and Software, where updates live (chapter 14). Before and after the switch, a card about the move sits at the top with the switch buttons.

05 Publishing and ingest

The Connect your encoder card gives everything an encoder needs. An application accepts up to eight streams on the air at once, each under its own stream name; new applications suggest livestream, and imported ones keep whatever names your encoders already send.

ProtocolAddressCredentials
RTMPrtmp://your-server:1935/<app>, key <stream>User name and publishing password, the usual sign-in exchange
RTMPSrtmps://your-server/<app> (shares the HTTPS port and certificate)As RTMP; shown once HTTPS playback is on
SRTsrt://your-server:9998 with stream ID #!::r=<app>/<stream>,m=publish,u=<user>,s=PASSWORDPassword in the stream ID; set the SRT passphrase to the same password to encrypt
WebRTC (WHIP)…/<app>/<stream>/whipBearer token: the publishing password, or an API token with publish
RTSP publishrtsp://your-server/<app>/<stream>User name and password, or ?password=

The card shows the exact addresses for each application; use those. SRT moves to UDP 9999 and RTSP to 5554 when another program holds the usual port, and the card follows. Single-field encoders such as OBS and FFmpeg take the SRT URL; vMix, Haivision and hardware encoders take the SRT server and Stream ID separately.

Encoders with only a stream-key field

Streamlabs, phone apps and some hardware cannot answer a user-name-and-password challenge. Tick Encoders put the password in the stream key on the card, then give them <stream>?password=YOUR PASSWORD as the key. Encoders that do offer a user name and password keep working.

Pulling instead of publishing

Two ways, both under the application. Read the stream from a camera or another server instead makes the application's whole source a pull, with up to four backups tried in order while it fails; viewers keep the same stream through a short drop and Cue goes back to the main source when it answers. Streams from elsewhere adds pulled streams next to what encoders publish, each under its own name, with up to five addresses and Read it only while someone watches for on-demand pulls. Accepted sources: rtsp://, srt://host:port?streamid=…&passphrase=…, HLS, udp:// (multicast too), tshttp:// and rtmp://.

06 Outputs and players

The Watch card lists every address the application plays at. They are built from the server name in Settings, and they read livestream: if your encoder publishes another stream name, put that name in its place.

Console labelShapeNotes
HLS/<app>/<stream>/playlist.m3u8On port 1935 (http) or 443 (https)
HLS with rewind…/playlist.m3u8?DVRWhen DVR is on
MPEG-DASH…/manifest.mpdWhen Offer MPEG-DASH is ticked
WebRTC (WHEP)…/whepSub-second latency
MPEG-TS over HTTP…/mpegtsFor set-top boxes and IPTV players
SRTsrt://…?streamid=r=<app>/<stream>,m=requestRead the stream as MPEG-TS over SRT
RTSPrtsp://…/<app>/<stream>Over TCP
RTMPrtmp://…:1935/<app>/<stream>Only with Allow RTMP playback
Player page/_player/<app>/<stream>A hosted HTML5 player; the embed code frames it

HLS packaging and latency

Under the application's Settings, HLS packaging offers MPEG-TS (plays in every player), fMP4 / CMAF and Low-Latency HLS (fMP4, 2-3 s behind live). Segment length is 2, 4, 6 or 10 seconds; shorter segments lower the delay. Saving restarts the stream's packaging, so viewers reconnect once. Audio-only variant adds an audio rendition for listeners on cellular (fMP4 and Low-Latency only).

Delivery options

The HLS and DASH delivery group adds I-frame playlists for scrubbing, timed ID3 from the encoder's onTextData/onCuePoint, CEA-608 captions and teletext as WebVTT subtitles, gzip for playlists, HLS encryption (AES-128 (whole segments) or SAMPLE-AES (MPEG-TS, Apple), with key rotation), a path prefix for use behind a proxy, and extra response headers. Encryption covers HLS only and cannot be combined with DASH or Low-Latency HLS.

07 Transcoding and ABR ladders

By default Cue repackages what arrives without re-encoding it. Give an application an Adaptive bitrate ladder and it also makes lower renditions, aligned on the same segment boundaries, which players switch between by connection and screen:

  • Off: the source only
  • HD: source, 720p, 480p, 360p
  • SD: source, 480p, 360p
  • Mobile: source, 360p, 240p

The source is always offered as it arrives, and no rendition is made at or above its height. A custom ladder of up to five renditions can be set through the API; the console then shows it as Custom.

Choosing the hardware

The application's Picture and sound card has Encode on:

  • Automatic (NVIDIA NVENC, then Quick Sync, then the CPU), the default.
  • NVIDIA card (NVENC), with an optional card number as nvidia-smi counts them; left empty, the least busy card.
  • Quick Sync / VA-API: Intel graphics, on Linux. Cue does not use Quick Sync on Windows.
  • The CPU, with an Encoder preset from ultrafast to veryslow (veryfast by default; slower is sharper and costs more processor).

The same card adds a PNG logo in a corner (up to 256 KB, with height and opacity), deinterlacing for 1080i or 576i sources, a target shape (16:9, 4:3, 1:1, 9:16) with fit, fill or stretch, a volume change in dB, the audio track to use, and the source's bitrate when it is re-encoded. These apply to what HLS and DASH viewers get; RTMP, SRT, RTSP and WebRTC carry the stream as it arrives.

Renditions need FFmpeg on the server. The Transcoding line on the Server page tells you what the server can do; if it reads not available (FFmpeg is not installed), ask us and we will add it. Where your ladder is made is shown under the preview, for example Renditions: 720p, 480p, 360p · made on Quick Sync.

08 Recording, DVR and clips

Recordings are kept on the server's own storage, in a store Cue installs alongside itself. In the application's Settings:

  • Record every broadcast, and Keep recordings for 7, 30 or 90 days, a year, or until I delete them.
  • Record only at these times (empty: whenever live): one window per line, such as mon-fri 09:00-17:00 or sun 10:00-12:30, in the time zone you pick beside it. daily, weekdays and weekends work too.
  • Let viewers rewind (DVR) and How far back, from 30 minutes to 30 days. Players rewind at the HLS with rewind address; sites already built around index-<from>-<seconds>.m3u8, timeshift and archive addresses keep using them.

The Recordings card lists each broadcast with its length and size: Play, Download, MP4 (the same recording as one MP4 file), Save a clip (a stretch, given as minutes:seconds, saved as an MP4 in the application's media library) and Delete.

Video-on-demand applications are not imported yet. On-demand libraries, playlists and 24/7 channels played from files are services of the Cue Reseller Panel, where your licence includes it (chapter 15). If your previous server plays video files today, tell us before the switch.

09 Restreaming

The Restream card sends the application's stream on whenever you broadcast, to up to five targets. Add a target offers presets for YouTube and Facebook (both over RTMPS) and Twitch, where you paste only the stream key; Other RTMP server for any rtmp:// or rtmps:// address with its key; and SRT or UDP (MPEG-TS) for an SRT listener or a UDP destination, multicast included. Each target shows its state (Waits for your broadcast, Connecting, Sending, Retrying with the last error) and can be switched off without deleting it. Keys are stored sealed and shown masked.

10 SCTE-35 and ad breaks

SCTE-35 cues arriving over SRT or MPEG-TS, and RTMP data messages that carry a cue (onCuePoint, onCUE and similar), are kept. The application's Ad markers in HLS setting chooses how they appear: #EXT-X-CUE-OUT / CUE-IN (the default), #EXT-X-DATERANGE (SCTE35-OUT/IN), Both or Off. Segments are cut at the splice point in the source and in every ladder rendition, so an ad decision service such as AWS MediaTailor or Google DAI can replace exactly the break. DASH carries them as an EventStream. The Watch card counts the cues it has seen and shows the last.

To start a break yourself, without a cue from the encoder, use the API (how-to).

Server-side ad insertion inside Cue itself (VAST ads stitched into each viewer's stream) is a feature of the Cue Reseller Panel's services, where your licence and plan include it.

11 Securing streams

Who may publish

Keep Require a password to publish on. New password on the encoder card replaces the password; the running encoder keeps streaming until it reconnects, then needs the new one. Repeated wrong passwords from one address are slowed down.

Who may watch

The Who may watch card is checked when a viewer starts, on every protocol including the thumbnail; nobody already watching is cut off. Leave it empty to let anyone watch.

  • Sites that may embed the player, with Refuse players that do not say which site they are on for a strict lock (apps and set-top boxes send no site, so they would be refused).
  • Blocked addresses and Only these addresses, as addresses or ranges such as 203.0.113.0/24.
  • Countries: every country, only these, or all but these, by two-letter code. This needs the server's country database, which it downloads by itself.
  • Signed links: Cue signed link or one of the two other common signed-link formats, with a Shared secret, and A link works only from the viewer's address to bind a link to one viewer. If your website already signs links, pick the format it uses and paste its existing secret: the links your site makes keep working. Make a test link gives you a one-hour link to try.

Your own decision service

Authorization backend takes an on_play and an on_publish URL, using the widely used on_play/on_publish protocol: viewers are a GET, publishers a JSON POST, 200 lets in and 403 keeps out. An existing backend answers Cue as it is, including X-AuthDuration, X-UserId and X-Max-Sessions. If it does not answer within 3 seconds, a running session keeps its last verdict and a new one is refused.

DRM and paywall

FairPlay and Widevine DRM, with your own Apple and Google credentials, and a paywall paid into your own Stripe account, are features of the Cue Reseller Panel's video services (Paywall & DRM), where your licence includes them. The Cue Media Server console's protection is the set above plus HLS encryption.

12 IPTV and the guide

When the IPTV service is part of your server, the IPTV page runs subscriber delivery in the standard IPTV panel format that every IPTV app speaks. Its tabs are Overview, Lines, Channels, On demand, Bouquets, Guide, Resellers, Activity and Settings.

  • Lines are subscribers: user name and password, expiry, how many devices at once, trial, allowed addresses.
  • Bouquets group the channels, movies and series a line may see.
  • Guide loads XMLTV programme guides on a schedule; catch-up plays from the DVR recordings at the timeshift addresses IPTV apps expect.
  • Subscribers use IPTV Smarters, TiviMate, XCIPTV and similar apps with the server address and their line's login, or the M3U playlist; Enigma2 receivers take the bouquet script, and MAG boxes the portal at /c/ when it is on.
  • Resellers sign in to the same console with their own account, see only the IPTV lines, and create and renew lines with the credits you give them.
  • Activity shows who is watching now and the recent connections.

13 Stream health, graphs and logs

  • Per application: the status pill, the four figures, how the stream arrives (Arriving over SRT, Arriving over RTMP, Pulled from the source), its SCTE-35 cues, the renditions line, and for pulled sources, live, retrying with the error, or live from a backup.
  • Viewers and traffic: viewers and Mb/s sent, per application and for the server, sampled each minute, kept 48 hours by the minute and 90 days by the hour. Hover the graph to read a moment.
  • Logs › Server log: the engine's last lines, with a filter (an application name, or error) and Follow new lines. Lines with errors, refusals, drops and retries are highlighted.
  • Logs › Sign-ins and changes: who signed in, from where, and what they changed.
  • Webhooks: up to five per application, POSTing JSON in the common event_sink shape when a stream goes live or ends, a pulled stream connects or goes away, an encoder is turned away, or a recording starts or finishes. An optional signing key adds X-Signature; undelivered events wait and are sent again. Send a test event checks your receiver.

Analytics tools that read a monitoring API or a W3C access log can be pointed at Cue too; ask us to turn the access log on.

14 Settings, users, updates, licence

Settings

  • License: Licensed with its key and Valid until. The licence renews itself with our licence server; if that cannot be reached, the server keeps running until the date shown. You will not need to enter a key: we set it.
  • Server name: the name or IP address encoders and viewers use. Every address in the console is built from it.
  • Playback addresses: http, port 1935 or https.
  • HTTPS certificate: Get a free certificate from Let's Encrypt for the server name. Point the name's DNS A record at the server first; the status goes from Working to Trusted, the certificate covers playback over https and the console, and it renews itself. If your previous server used your own certificate, talk to us before the switch.
  • Appearance: the name in the header and an accent colour.
  • Your password, Two-factor sign-in, Users and API tokens: see chapter 3 and APIs.

Updates

Releases are signed by us, and your server checks the signature and every file before installing. On the Server page, Software shows the version and whether a newer one is out. Schedule the update picks a time within 30 days (it suggests 03:00 your time); Install now does it at once; Check now asks again. Installing restarts Cue: live streams stop for about half a minute, encoders reconnect by themselves, players retry, recordings in progress end and start again, and you sign in again afterwards.

15 The Cue Reseller Panel

Where your licence includes it, the Cue Reseller Panel opens at https://your-server:8443/. It is a hosting control panel built around the engine, laid out like MediaCP, for selling streaming to your own customers:

  • Administrator menu: Dashboard, Customers, Services, Paywall, Statistics, Integrations, System Config, Reseller Plans, Email Templates, Stream Events, Announcements, Software Health, Software Updates, Backups and License.
  • Services: Live Streaming, TV Station (a 24/7 channel played from uploaded videos on a schedule, which an encoder can take over), Ondemand Streaming (a video library with playlists and an embeddable player), Relay and Radio (Icecast).
  • Each service: Overview, Configure, Media Library, Playlists, Schedule, Widgets & Links, Public Page, Stream Targets, GeoIP Country Locking, Secure Links, Paywall & DRM, Stream Events and Reporting, as its type and features allow.
  • A MediaCP-compatible API for WHMCS, Blesta, ClientExec and WiseCP modules, white label per reseller, and the interface in thirteen languages.

The server-level pages described in this guide (Server, Logs, Settings, Import) stay at /classic/; a panel administrator's session opens them without a second sign-in. Our Cue Reseller Panel page describes the panel in full.

16 How-tos

Every address below is a pattern: the application's Connect your encoder and Watch cards show the exact one.

Publish from OBS Studio RTMP · SRT · WHIP

RTMP

  1. In OBS, open Settings › Stream and set Service to Custom...
  2. Server: the console's Server line, for example rtmp://your-server:1935/live. Stream Key: the stream name, for example livestream.
  3. Tick Use authentication and enter the console's User name and your publishing password.
  4. Under Output, set the keyframe interval to 2 seconds; then Start Streaming. The application turns Live within seconds.

SRT

  1. Same Custom... service. Paste the console's SRT URL into Server, putting your publishing password in place of PASSWORD, and leave the stream key empty.
  2. To encrypt, append &passphrase= followed by the same password.
srt://your-server:9998?streamid=r=live/livestream,m=publish,u=live,s=YOURPASSWORD&passphrase=YOURPASSWORD

WebRTC (WHIP), OBS 30 or later

Service WHIP, the console's WHIP URL as the server, and the publishing password as the bearer token.

Publish from vMix RTMP · SRT
  1. In vMix's streaming settings choose a custom RTMP server as the destination.
  2. URL: rtmp://your-server:1935/<app>. Stream name or key: livestream (or your stream name).
  3. If the destination has user name and password fields, fill them in. If it has only the key, tick Encoders put the password in the stream key in the console and use livestream?password=YOURPASSWORD as the key.

For SRT, use vMix's SRT output in caller mode with the console's SRT server host and port, the Stream ID with your password in place of PASSWORD, and the same password as the passphrase if you want encryption.

Publish from Wirecast RTMP · SRT
  1. Add an output destination of the RTMP server kind.
  2. Address: rtmp://your-server:1935/<app>; stream: livestream.
  3. Set the credentials to the console's User name and your publishing password, then start the broadcast.

For SRT, choose Wirecast's SRT output with the console's server and stream ID, as for vMix above.

Add a pull source (camera, satellite receiver, another server)
  1. Open the application and, under Streams from elsewhere, press Add a stream.
  2. Give it a Name and the stream name to Serve it as stream, such as camera1.
  3. Put the address on the first line and any backups on the next lines (at most five in all), for example rtsp://user:password@192.0.2.20/stream.
  4. Tick Read it only while someone watches for a camera nobody watches most of the day. Press Add; the pill moves to Live (or Waits for a viewer).

It plays at /<app>/camera1/playlist.m3u8 like any published stream.

Set up an ABR ladder
  1. On the Server page, check that Transcoding names NVENC, Quick Sync or the processor rather than not available.
  2. Open the application; in Settings, set Adaptive bitrate to HD, SD or Mobile and press Save.
  3. In Picture and sound, leave Encode on on Automatic, or pick the NVIDIA card or the CPU, then Save.
  4. Go live. Under the preview, Preparing renditions on… turns into the list of renditions. The same playlist.m3u8 now offers them all.
Turn on DVR (rewind)
  1. In the application's Settings, tick Let viewers rewind (DVR) and choose How far back.
  2. Press Save. The Watch card gains HLS with rewind: …/playlist.m3u8?DVR.
  3. Give that address to your player. DVR records every broadcast and keeps it at least as long as the window.
Get the player and embed code
  1. Open the application. The Watch card shows the Player page and an Embed code box.
  2. Press Copy embed code and paste it into your page. It is a 640×360 iframe with autoplay and fullscreen allowed; change the size to suit.
  3. To restrict which sites may embed it, list them under Sites that may embed the player.
<iframe src="http://your-server:1935/_player/live/livestream" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
Push to YouTube or Facebook
  1. Get the stream key: in YouTube Studio, Create › Go live › Stream; in Facebook, Live video › Streaming software.
  2. In the application, under Restream, press Add a target, pick YouTube or Facebook, paste the key and press Add.
  3. When you go live, the target turns Sending. Untick On to pause it without losing the key.
Secure a stream
  1. Make sure publishing needs a password, and give each encoder operator only what they need.
  2. Under Who may watch, list your domains in Sites that may embed the player.
  3. Set Signed links to Cue signed link (or the format your website already uses) and press Save. Leave the secret empty and Cue makes one, shown once: your site signs links with it.
  4. Press Make a test link and play it; an unsigned address is then refused.
  5. Optionally, limit countries, or bind links to the viewer's address.
Insert an ad break

Make an API token under Settings › API tokens with write on the application, and note the application's key: the last part of its console address, such as c3 in #/app/c3. Then, while the stream is live:

curl -X POST https://your-server:8443/api/v1/channels/c3/cues \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"stream":"livestream","type":"out","duration":30}'

That starts a 30-second break now and ends it by itself. "type":"in" ends a break early, "cancel" withdraws one announced for later, and "at" (an RFC 3339 time, at most an hour ahead) schedules it. The cue goes into HLS, DASH and MPEG-TS outputs just as an encoder's would. Add -k to curl while the console still uses its own certificate.

Read stream health
  1. The application's pill: Live, Waiting for encoder or Stopped.
  2. Under the preview: how it arrives, the renditions, and the SCTE-35 cues seen.
  3. The viewers graph: a cliff where viewers fell away points at the source; a steady line with complaints points at the players.
  4. Logs, filtered by the application's name: look for refused publishers (a wrong password), retries of a pulled source, and drops.
  5. The Server page: load, memory, disk, and how many streams are being transcoded on which hardware.
Reset a stream key (publishing password)
  1. On the application's Connect your encoder card, press New password beside Password, and confirm Set new password.
  2. Copy the new password from the dialog: it is shown only once.
  3. The encoder on air keeps streaming until it reconnects; update it with the new password before its next start.

17 Terms you know, Cue terms

If you're used to another streaming server, this is where its ideas live in Cue.

On another streaming serverIn Cue
Application, or a single streamAn application with the same name. _definst_ is accepted in every address.
Stream inside an applicationA stream name under the application, up to eight on the air at once; same publish and playback addresses.
Stream template with a prefixAn application under which publishers name their own streams (rtmp://your-server/<prefix>/<name>).
Publishing passwordThe application's user name and publishing password, carried over.
Stream files, inputs, startup streamsStreams from elsewhere, or the application's own source with up to four backups.
TranscoderThe Adaptive bitrate ladder.
Stream targets, pushesRestream, up to five per application.
DVR window, archiveLet viewers rewind (DVR), up to 30 days, with ?DVR, archive and timeshift addresses.
Stream recorderRecord every broadcast.
Secure tokens, signed URLsSigned links, in Cue's format or the common formats, with the same secret.
SCTE-35 in HLSAd markers in HLS.
on_play / on_publish backendsAuthorization backend, same protocol.
Event sinksWebhooks, same payload and signing.
SMIL and group adaptive addressesAnswered: they play the stream's adaptive master.
The server's web managerThe Cue console on 8443.
Management REST APIAnswered by Cue for the tools that already use it. See APIs.

18 What an import carries

The import keeps names, publishing users and passwords, viewer limits, restream targets, pulled sources with their backups, recording and rewind settings, signed-link secrets, authorization backends and webhooks. It shows a note beside every application for anything it adjusts:

  • A transcoder becomes a ladder of up to five H.264 renditions; settings it cannot read become the HD ladder.
  • Restream targets: RTMP only, five per application. Targets that name each stream need adding by hand.
  • A rewind window longer than 30 days, or one sized by disk space, becomes 30 days. Recordings imported as "keep everything" are kept until you set a retention.
  • Several publishing users in one file become one; the note says which.
  • An authorization backend running on the old server itself has to keep running next to Cue.
  • Not imported yet: video-on-demand applications, edge/repeater applications (import the origin) and first-generation secure tokens.

19 APIs

Cue's own API

Everything the console does goes through https://your-server:8443/api/v1/. Make a token under Settings › API tokens › New token: tick the actions it may take (read, write, publish, play), name the applications it covers (* for all, and for server-wide calls) and an expiry in days (0 for never). The token is shown once; only its hash is kept. publish and play tokens are also WHIP and WHEP bearer tokens.

curl -H "Authorization: Bearer YOUR_TOKEN" https://your-server:8443/api/v1/channels

The APIs your tools already use

Cue also answers the management APIs your existing tools and control panels may already use: the REST API on port 8087 and the monitoring pages on 8086, with the same users and passwords as before (HTTP basic authentication), and the stream API at https://your-server:8443/streamer/api/v3/, signed in with a console user or a Cue API token. Applications, publishing security, stream targets, recorders, pulled streams and monitoring map onto Cue's settings. If a call your tool makes is not answered, tell us which.

20 On the server: Windows and Linux

Cue runs on Windows Server 2022 and 2025, and on current Ubuntu, Debian, AlmaLinux, Rocky and RHEL. You never need to touch these files to use Cue; this is for administrators who like to know.

Windows ServerLinux
ProgramC:\Program Files\Cue\cue.exe (on the PATH)/usr/local/bin/cue
Configuration%ProgramData%\Cue\config.json/etc/cue/config.json
Server secret%ProgramData%\Cue\node.key/etc/cue/node.key
Applications, users, recordings%ProgramData%\Cue\state/var/lib/cue
Logs%ProgramData%\Cue\logs, one file per servicejournalctl -u cue
ServicesCue, CueStorage (recordings, 127.0.0.1 only), CueHelper (installs updates you request)cue, cue-storage, cue-helper, cue-update
FirewallWindows Firewall rules in the Cue groupnftables or firewalld rules made by the installer

Ports

PortFor
1935/tcpRTMP publishing and playback, and HTTP playback
80, 443/tcpWeb playback; 443 also carries RTMPS. On Windows, Cue cannot use them while IIS holds them.
8443/tcpThe console and its APIs
9998/udp (or 9999)SRT
554/tcp (or 5554)RTSP
8189/tcp+udpWebRTC media
8086, 8087/tcpThe monitoring pages and REST API your existing tools use, where the previous server offered them
1936, 18086, 18087/tcpCue's test ports before the switch, while the old engine still serves

Commands

In an elevated PowerShell on Windows, or as root on Linux:

cue admin list-users                 # who can sign in
cue admin reset-password admin      # prints a new password for admin
cue admin disable-2fa admin         # lost phone and recovery codes
cue license status                   # the licence as the server sees it
cue update -check                    # is a newer signed release out?

Please leave cue switch to us: it moves the standard ports between Cue and the old engine.

21 Troubleshooting and FAQ

The browser says the console's certificate is not trusted.
Expected until the server has a name with a Let's Encrypt certificate. Accept it for this address, then set a name and turn on Get a free certificate from Let's Encrypt for the server name under Settings.
I signed in at port 8443 and only see a License page.
That is the Cue Reseller Panel, which your licence may not include. The Cue Media Server console is at /classic/ on the same port.
My encoder is refused.
Open Logs and filter by the application's name: a refused publisher means a wrong user name or password, or an encoder that cannot do the sign-in exchange. For the latter, tick Encoders put the password in the stream key. Repeated wrong attempts from one address are slowed down.
The application stays on "Waiting for encoder".
Check the encoder's server address and application name, that port 1935 (or SRT's UDP port) is reachable, and the encoder's own error. Before the switch, test encoders must use port 1936.
Viewers get an error but the application is Live.
Check Who may watch: an embed lock, a country rule or signed links refuse anyone who does not match. Then check Maximum viewers.
No renditions are made.
Look at Transcoding on the Server page. Without FFmpeg, or with no H.264 encoder in it, Cue serves the source only; ask us.
"Countries cannot be allowed or blocked".
The server has not downloaded its country database yet. It does so by itself; try again later.
Restreaming to YouTube says Retrying.
The card shows the last error. Most often the stream key has changed on the platform's side: Edit the target and paste the new key.
Does the switch change my bill?
Questions about your account and invoices are for our support team; this guide covers the software only.
Can I go back to my previous server?
Yes. The old engine stays installed, stopped and disabled, and the switch-back button on the Server page brings it back in about a minute. Talk to us first.

22 Getting help

The engineers who wrote this guide look after the servers it runs on. Ask in the chat on this site, where an AI assistant answers at once and a person takes over whenever you ask, or write to support@serverroom.net. Include the server's IP address and the application's name, and if something misbehaved, the time it happened.

Switching soon? Sign in before the switch and walk through your imported applications. Anything that looks different from what you expect is easier to settle before the ports move.