- SCTE-104 over IP: cues sent over TCP to an inserter or encoder (host, port 5167, AS index, DPI PID index). More
- SCTE-104 via DeckLink: the bundled CasparCG enables VANC on DeckLink cards that support VANC only with 10-bit YUV (e.g. DeckLink Mini Monitor).
- SCTE-104 pre-roll default changed to 6000 ms.
- SCTE-104 in templates: save a complete ad break – duration and event ID are calculated on each insertion. More

Run your playout
with confidence.
Step by step through installation, port planning, playlists, on-air operation, automation and troubleshooting – the operator guide for PlyCast 3NX, the playout control for CasparCG.
The browser does not have to stay open. The server keeps the playlist and playout state – only the PlyCast server and CasparCG must keep running.
Download the software
The beta installer is offered here as soon as the download is available. Tested on Windows 11 with current updates and current Blackmagic DeckLink drivers. CasparCG needs suitable hardware, including a compatible GPU – check the CasparCG system requirements before installing.
Interface overview
Thumbnails and waveforms.
The current playlist in transmission order.
Templates, plugins, functions, categories, Logos and CGs.
- Top bar: preview, transport controls, on-air and next item, estimated playlist end.
- Below the playlist: video server status and server clock.
- Channel bar: only appears with more than one channel.
- Scope button next to the preview; Emergency List button in the playlist header.
- User menu (top right): change password, language, sign out.
- An update notice appears next to the video server status when available.
Install and configure: the correct order
The supplied configuration works without manual setup. CasparCG can be configured later under Settings → CasparCG; save casparcg.config and restart CasparCG to apply. Read the CasparCG Server Wiki before changing SDI, screen or other outputs.
Use this order for custom ports, multiple instances or a different CasparCG installation:
- Install PlyCast and CasparCG. Locate
config.jsonandcasparcg.config(normallyassets/casparcg/casparcg.config; alternative path viacasparcg.config_path). - Configure CasparCG first: channel, video mode, output consumers, media path and AMCP listener. Make sure the AMCP TCP port is free and the media path points to the collection PlyCast indexes. Restart CasparCG after edits made while it runs.
- Configure PlyCast in
config.json: setcasparcg.hostandcasparcg.port; choose free ports forserver.port,sftp.portandlive.port; setmedia.directoryandcasparcg.layer. Playlist 1 maps to CasparCG channel 1. - Check for port collisions. Several instances on one host each need their own web, SFTP and live ports.
- Start PlyCast. The launcher can start a local CasparCG when
casparcg.autostartistrue. Verify the video server indicator and Settings → Info → Ports.
| Service | Example | Direction and purpose |
|---|---|---|
| Web interface | TCP 8000 | Incoming browser and API traffic (server.port). |
| SFTP upload | TCP 8001 | Incoming file upload, if SFTP is enabled. |
| Live preview input | TCP 8003 | Stream from CasparCG to PlyCast; channel 2 uses 8004, etc. Local only. |
| Output monitoring | TCP 8010 | Small picture and sound feed from CasparCG to PlyCast; channel 2 uses 8011, etc. Local only. |
| CasparCG AMCP | TCP 5250 | Outgoing control connection from PlyCast to CasparCG. |
Values from the supplied config.json, not reserved defaults. For remote access, open the web port and SFTP (if used) in the firewall – live preview and output monitoring stay local. The actual addresses are shown under Settings → Info.
Tray icon and startup
On Windows the launcher shows a tray icon – double-click it to open the web interface.
| Tray item | Action |
|---|---|
| Open web interface | Opens http://localhost:<server.port>. Default action. |
| Restart | Confirms, then restarts the PlyCast server. Check playout first. |
| Quit | Confirms, stops the server and any locally managed CasparCG. Interrupts playout control. |
- On first start, PlyCast adds itself to Windows startup; Start with Windows… opens that list.
- The launcher restarts the server after a crash, but pauses after repeated crashes.
- A second launch simply opens the existing interface.
- Without tray support the launcher runs in a console window – stop it with Ctrl+C.
- Closing a browser tab is not the same as Quit.
First run
- Start PlyCast locally and double-click the tray icon to open the interface.
- Allow access in the Windows Firewall prompt on the trusted network (usually Private). If other computers cannot connect, check the firewall rules for the ports under Settings → Info → Ports.
- On a fresh install, sign in as
admin/adminand set a new password (at least six characters) immediately. Existing accounts keep their passwords. - As administrator, open Settings: confirm media folder, CasparCG host, port, channel and video layer. Check the video server status.
- Put media into the media folder, select Re-index media in the left panel, then browse or search.
- Drag clips into the playlist in transmission order.
- Check the next item and the playlist end estimate, then press Play.
bin inside the installation's webdoc folder, restart PlyCast and re-index.Up to four channels
Playlist 1 plays on CasparCG channel 1, playlist 2 on channel 2, and so on. The number of channels follows the <channel> entries in casparcg.config; with one channel the channel bar stays hidden.
Playlist, playout state, transport controls, preview, emergency list and As-Run entries.
Media, templates, plugins, categories, Logos and CGs.
- Switching: click a channel tab. Tabs show name and state (On air, Playing, Stopped). Open a channel directly with
?ch=2in the address. - Names: set per channel under Settings → PlyCast or in the CasparCG form. Empty means just “PlyCast”.
- Video standard: each channel uses the video mode of its CasparCG channel; media conversion follows that standard.
Media and indexing
- Browse folders with the breadcrumb or use search. Each clip shows thumbnail, waveform, duration, resolution and measured loudness.
- Thumbnails and waveforms are built in the background after each re-index (task Creating preview).
- Use the refresh button after changing files; the file-check button verifies that playlist files still exist.
- Drag clips into the playlist and use the In/Out editor to set the playable part.
- The panel shows the free disk space on the media drive.
- Dropping a folder adds all its clips – hold Ctrl while dropping for random order.
- New or changed files are converted to MXF during indexing. Let indexing finish in the Tasks panel and review the result before air.
"media": {"allow_mass_remove": true}, re-index once, then set it back to false. Changing the media folder in Settings is not affected.Media info, categories and comments New
- Double-click a clip to open Media info. With several clips selected (Shift or Ctrl/⌘), edits apply to all.
- Preview: Space plays/pauses, ←/→ moves one frame (with Shift about one second). Click the waveform to jump.
- Details: duration, video and audio format, loudness, peak, applied gain, normalisation, size, modification date, path and original file (or deleted if removed automatically).
- Categories: tick the ones that apply. A mixed state means only some files have it – clicking applies it to all. Administrators create, rename and delete categories; all users can assign them.
- Comment: free note shown in the clip tooltip. With several files and differing comments, leave it empty to keep them unchanged.
- Save with the button or Ctrl+Enter. Categories and comments survive re-indexing and are separate from the playlist categories used for AutoMatch.
Media conversion (MXF)
During indexing, media is converted to MXF in the channel's video standard. Video that already matches is copied 1:1, everything else is converted. The original is kept as .bak – e.g. Film.mp4 becomes Film.mxf plus Film.mp4.bak. CasparCG ignores .bak files; older …mp4original backups are renamed automatically.
| Setting (Settings → PlyCast) | Effect |
|---|---|
| Audio normalisation | Off, peak (max. peak in dBFS) or LUFS (target, e.g. −23 LUFS). Applies at the next indexing. |
| Broadcast-safe levels | Limits video to Y 16–235 and Cb/Cr 16–240 (full range → TV range). |
| Colour space | HD → BT.709, SD → BT.601. |
| Delete originals automatically | Deletes .bak files after each successful conversion, including existing ones. Cannot be restored. |
| Preview proxies | Browser proxies are deleted after an unused period (1–365 days, default 14). See the Cache tab. |
- Changing loudness, levels, colour space or video standard reconverts all media at the next re-index.
transcode.max_parallellimits simultaneous conversions;transcode.reserve_gbsets the disk space that must stay free.
In/Out editor
Double-click a clip in the playlist (or an indexed clip in a template) to open preview and In/Out editor. Changes apply only to that entry – the media file itself is never trimmed. H.264 MP4 and MOV play directly in the browser; MXF, ProRes, DNxHD and others use a 540p preview proxy, created at low priority on first open. A waveform runs under the timeline.
- Play the preview or drag along the timeline to find a frame.
- Press IN (I) on the first frame and OUT (O) on the end point – the OUT frame itself is not played. Both timecodes can also be typed directly.
- ▶ IN–OUT previews only the range and shows its length. Reset clears both marks, Apply keeps them.
- Optional: open Scope to measure the current frame (black/white levels, content outside 16–235).
- Back in the playlist, check the IN/OUT badge, the effective duration and the updated start times.
| Key | Action |
|---|---|
| Space | Play / pause preview |
| ← / → | One frame back / forward |
| Shift + ← / → | About one second |
| I | Set IN at current frame |
| O | Set OUT at current frame (excluded from playback) |
| Shift + I | Jump to IN point |
| Shift + O | Jump to OUT point |
Build a playlist
- Drag media into the playlist at the required position; reorder by dragging.
- Click to select, use multi-selection for several items, then move or remove the selection.
- Check start times, durations and filenames. The header offers Go to ON AIR and Clean Playlist (removes items already played).
- The top bar shows the on-air countdown, the next item and the estimated playlist end.
Groups
Groups bundle playlist or template entries into a named, collapsible block that moves as one unit.
| Task | How |
|---|---|
| Create a group | Select entries, then Group or Ctrl+G. Non-adjacent entries are gathered below the first selected one. |
| Name the group | Type a name – a leading Comment's text is suggested. |
| Collapse / expand | Arrow or double-click on the header. |
| Rename | F2 |
| Move the group | Drag its header. |
| Add / remove an entry | Drop it onto the group / drag it out. |
| Remove the group | Ungroup or Ctrl+Shift+G – entries are kept. |
- Groups only change the view – playout treats every entry as ungrouped, also in collapsed groups.
- The collapsed state is remembered per browser. Groups are saved with templates; Settings → PlyCast → Insert templates as collapsed group inserts each template as one collapsed group.
Selection, shortcuts and drag-and-drop
Shortcuts work when the playlist has focus and you are not typing in a field or dialog.
| Action | How |
|---|---|
| Select | Click. Shift+click selects a range, Ctrl/⌘+click toggles single items. |
| Delete | Delete or Backspace |
| Copy | Ctrl+C / ⌘+C |
| Paste | Ctrl+V / ⌘+V – before the first selected item, or at the end. |
| Add media | Drag a file from the media browser; drag a folder to add all its media; hold Ctrl while dropping to shuffle. |
| Reorder | Drag items – a selection moves together. |
| Group | Ctrl+G group · Ctrl+Shift+G ungroup · F2 rename |
Played items and the locked on-air portion cannot be changed.
Apply a Logo or CG
- One clip: drag a Logo or CG from the right panel onto the clip.
- Several clips: select them, then double-click the Logo or CG.
- Selected group: drag onto one of the selected clips. Dropping onto an unselected clip applies it to that clip only.
- Remove: click the badge on the playlist item.
On-air controls
Starts playlist playout.
Stops playout after confirmation. Check the on-air state before leaving the system.
Advances to the next playlist entry.
Starts the one selected item after its cue time. Also releases a Pause.
Preview and live stream: the preview shows still images or a live stream with mute control and audio meter. Administrators set the stream quality under Settings → PlyCast; a running stream restarts with the new quality. The stream only runs while someone is watching and playout is running. The video server indicator is independent of the browser preview.
| Quality | Resolution | Bitrate |
|---|---|---|
| Low | 240p | 0.45 Mbit/s |
| Medium | 360p | 0.7 Mbit/s |
| High | 540p | 1 Mbit/s |
| Maximum | 720p | 1.5 Mbit/s |
Scope
Waveform and luma histogram of the current preview image. Open it with the scope button beside the preview, click to enlarge. It works in image mode only (live mode shows “Image mode only”). In the In/Out editor, Scope measures the current frame directly from the file. The readings show black and white levels and the share of the picture outside 16–235.
Output monitoring
PlyCast checks the programme output of every channel. While a clip is on air it raises an alarm if the picture is frozen or black for 10 s or audio stays below −60 dBFS for 10 s. Only the picture centre is checked, so corner logos and lower thirds don't hide a freeze. Stop, Wait, Pause and the gap before a Fixstart are not checked. The browser does not need to be open.
- As-Run log: “Freeze/black on air”, “No audio on air” and when each ends.
- Alarms endpoint of the Now playing API.
- Email, if enabled under Settings → Alerts → Freeze / black / no audio on air.
output_monitor key | Default | Effect |
|---|---|---|
enabled | true | Turns monitoring on. |
freeze_seconds | 10 | Freeze alarm delay; 0 = no freeze alarm. |
silence_seconds | 10 | Audio alarm delay; 0 = no audio alarm. |
silence_db | -60 | Silence threshold. |
crop_center | true | Checks only the picture centre. |
port | 8010 | Channel 2 uses 8011, and so on. |
0 if that is normal for your channel.Functions
Drag a function from the right panel into the playlist and edit its settings. Double-clicking a function inserts it before the selection or at the end.
Operator note – no duration, no playback.
Duration in HH:mm:ss. The video layer is cleared during the wait.
Holds the last frame on air until TAKE or NEXT. The clip below is cued and starts immediately on release; the playlist shows “waiting for TAKE”. Start times after a Pause are estimates. Typical use: waiting for a live link.
Sets a server date and time for the following item. Earlier material may be cut, arriving early leaves a gap. A past time is ignored when Play is pressed.
Jumps to the item below a chosen Comment, creating a loop. The Comment must contain text and sit above the Goto; entries after the Goto can't be reached while the loop runs. To end the loop, stop playout or deliberately change the playlist.
Example: repeating playlist
- Drag a Comment to the top of the block and name it, e.g.
Loop start. It must not be empty – it's a jump marker and is not played. - Place one or more clips below it. At least one item between Comment and Goto must have a positive duration.
- Drag a Goto below the last clip, double-click it and choose
Loop startas target. - Check the order Comment → clips → Goto, start playout and watch the first jump back.
SCTE-104
Sends ad-insertion or segmentation cues at a scheduled time. Choose the output in the function – new entries take over the output and address used last.
PlyCast sends the message over AMCP to the DeckLink consumer of the CasparCG channel; it goes into the VANC of the SDI output.
PlyCast connects directly to an inserter or encoder – CasparCG is not involved. Host and port (default 5167); under Advanced AS index and DPI PID index. Sequence: init_request → message → check inject_response.
- DeckLink only – prepare CasparCG: in the CasparCG form enable VANC for the DeckLink consumer, set pixel format to 10-bit YUV and set
scte104-line(0 = off). Restart CasparCG. - Insert start and end item: Break Start before the segment, Break End after it. The duration is calculated automatically; the end takes the event ID of the start.
- Choose the signal:
splice_request(program ID, avail num, avails expected) ortime_signal+ segmentation descriptor (segmentation type, UPID type, UPID; under Advanced segment numbers and delivery restrictions). - Check timing and output: pre-roll (default 6000 ms), output delay CasparCG → SDI (default 120 ms, subtracted from the pre-roll), DeckLink device or inserter IP.
122, “pre-roll too small”) – then no SCTE-35 is created. Keep 6000 ms; entries from older versions keep 4000 ms and should be changed.- Duration: empty = automatic until the matching end ·
00:00:00= open. - Event ID:
0= automatic. - Verify: sent messages appear in the As-Run log with the reply –
202from CasparCG,100from an IP inserter. Check the encoder's SCTE-104 counters or splice event list and the SCTE-35 PID in the transport stream.
tsp -I srt --caller host:port -P tables --pid 500 -O drop
HTTP API
- Calls a URL with GET or POST at the item's start time (
http://orhttps://). - For POST enter a JSON body – sent as
application/json. - Called only while playout runs, at most 2 s late, timeout after 5 s.
- No duration, no effect on timing. The result (HTTP status or error) appears in the As-Run log.
Never black, never frozen
Each channel has its own emergency list. It loops when the playlist ends or a clip cannot play (e.g. a missing file) and stops as soon as the next playlist item starts.
- Click Emergency List in the playlist header.
- Drag media from the left into the list – up to 500 clips. The list saves automatically and shows clip count and total duration.
- Back to playlist returns, Clear removes all clips.
- On air, the interface shows which clip is playing. Start and end are logged as “Emergency list” and “Emergency list ended”.
- A Goto loop never reaches the playlist end – the emergency list is not triggered while the loop runs.
Templates
- Select playlist entries and click + next to Templates to save them as a reusable block.
- In the template editor drag media in from the left, functions or plugins from the right, reorder by dragging, double-click a function to edit, × to remove.
- Save with a descriptive name. Groups are kept.
Ad break template
- Add an SCTE-104 Break Start with empty duration (automatic), the spots and a Break End.
- Save as template.
- On each insertion PlyCast calculates the duration from start to end and generates a new event ID.
0 in the template – a fixed ID would give every break the same ID.Plugins are not executed in the template editor – they run when inserted into the playlist. Test custom automation off air.
Plugins: insert a station ident
Plugins are Python scripts in the plugins folder – create StationIdent.py there or use Plugin editor → + New as administrator. Replace the example path with a real, indexed path relative to the media collection.
# StationIdent.py
def InitLoad():
# inserted below the plugin entry
return ["Idents/StationIdent.mxf"]
def Cue():
import os; print("cue", os.environ.get("PLYCAST_ITEM_ID"))
def OnAir():
import os; print("on air", os.environ.get("PLYCAST_STARTTIME_MS"))
- In the editor run Test → InitLoad to check the return value without inserting anything.
- Drag StationIdent into a test playlist – the returned clip should appear below it. If not, correct the path or re-index.
- Run a controlled test to observe
Cue()andOnAir().
| Hook | Runs |
|---|---|
InitLoad() | On insertion. Returns a list of filenames or {"files": [...]}. |
Cue() | At the configured cue interval before the start. |
OnAir() | At the start time. |
- Each hook runs in its own process with a 60 s timeout.
- Environment:
PLYCAST_ACTION,PLYCAST_PLUGIN,PLYCAST_ITEM_ID,PLYCAST_STARTTIME_MS. - Names may contain letters, digits, underscores and hyphens. Files starting with
_are helper modules and don't appear in the list.
Random clips from a folder
- In the Plugin editor use 📁 Folders and click your media folder – the full path is inserted as a quoted Python string at the cursor.
- Paste it after
MEDIA_FOLDER =. - The example lists files with
.mp4,.movand.mxf(adjust the filter) and returns one random file on insertion. - Run Test → InitLoad and confirm the returned file is indexed before using it on air.
PlyCast maps absolute paths inside the media directory back to their index entries – the folder must contain indexed clips.
Logos, CGs and categories
Administrators create categories, Logos and CGs in the right panel.
- AutoMatch: categories can have a colour and filename rules, applied when media is added to a playlist. Separate terms with commas; exclusion terms suppress a match;
*matches everything and works as wildcard inside a pattern. - Playlist categories for AutoMatch are separate from media categories.
Choose a graphic source
Upload alpha graphics (supported MOV, PNG or TGA) to /_Overlays via SFTP with an administrator account. They are stored in overlays/ and appear in the picker without re-index. Make sure CasparCG can play the codec and alpha format.
An external http(s):// page, or an HTML file uploaded to /_CG – e.g. http://localhost:8000/cg/lower-third.html when CasparCG and PlyCast share a host. If CasparCG runs elsewhere, use an address that machine can reach.
Set CG timing
- Logo: stays visible on the clips it is assigned to.
- CG: timing is relative to each assigned clip – In after (time after clip start), Duration (how long it stays), optional In at remaining time (second appearance at this countdown value; leave empty for a single appearance).
- Times as
HH:mm:ss. Check the result in the timeline preview – a CG is always cleared at clip end.
Review source, layer, assignment and timing in a test playlist before transmission.
Settings
- PlyCast: channel names, CasparCG connection, video layer, preview interval, media folder and conversion settings.
- Alerts (email): video server disconnection, playlist end, rejected playback commands, missing files and frozen, black or silent output. After a crash the launcher emails the last console lines. Set SMTP and recipients, save, send a test email.
- Info: version, installation-specific web and SFTP ports, API links.
- CasparCG connection changes apply within about a second; server configuration or video mode changes may need a restart – plan them off air.
As-Run log and tasks
Open the As-Run log from the top controls and pick a date. It updates live; each row records time, channel, event, item, duration, user and details.
- Filters: event type (played, cued, plugin, operator, system, errors), free-text search, channel (incl. “System”), quick filters for errors/warnings and fallback/emergency events.
- CSV export from the log view. Administrators can clear the log – daily CSV files are kept.
- The Tasks panel (left) lists background work like indexing – wait for it before checking media availability.
Export to MariaDB
- Under Settings → As-Run MariaDB enter host, port, user, password and database name.
- Click Connect & create database – creates the database and table
plycast_asrun(needs CREATE privileges). - Enable Export completed clips to MariaDB and save. Existing CSV entries are transferred.
The local CSV files remain the master copy. Export runs in the background about every 15 s and resumes after database errors without duplicates.
CasparCG form editor
Edits casparcg.config as form or XML: add or remove channels and consumers, set video modes and names, DeckLink options such as VANC and scte104-line. Empty fields use the CasparCG default; <paths> can only be edited in XML view. Saving writes a .bak backup – use Restart CasparCG to apply (output is interrupted for a few seconds).
| Key | Default | Effect |
|---|---|---|
casparcg.watchdog_interval | 10 s | Checks whether CasparCG is running; 0 = off. |
casparcg.hang_restart_s | 60 s | Restarts CasparCG if it runs but doesn't answer; 0 = off. |
After each start CasparCG gets two minutes to load. If it keeps hanging, the wait doubles up to 30 minutes. Every restart is logged in the As-Run log.
Cache tab
| Cache | Contents and effect of clearing |
|---|---|
| Thumbnails & waveforms | Images and waveforms for media list and In/Out editor. Rebuilt in the background; unused entries removed after 180 days. |
| Preview proxies | 540p proxies for In/Out editor and Media info. Recreated when a clip is opened; proxies being created are kept. Unused proxies removed after the configured days (1–365, default 14). |
| Clear all | Clears both. |
Media files are never touched. Files open at that moment are skipped and reported. The cache lives in the installation's cache folder.
Restart tab
| Button | Effect |
|---|---|
| Restart server | Restarts only the PlyCast web server. |
| Restart CasparCG | Restarts CasparCG – output is briefly interrupted. |
| Restart computer | Restarts the OS and all services after confirmation. |
config.json are stored encrypted. On Windows the key is bound to the computer – after moving to a new machine, re-enter these passwords.Language
English, Deutsch, Français, Italiano, Español, Português, Українська, Русский. Choose in the user menu (stored in the browser); default is the browser language, otherwise English. Server messages, tasks and alerts follow the same language – alert emails use the language key in config.json.
Updates and version
- PlyCast checks for a newer version about every 12 hours – a notice appears next to the video server status. Click it to download the setup.
- Run the setup. PlyCast closes and restarts automatically – CasparCG playout continues.
- If “Start with Windows” is ticked, PlyCast is added to the startup list once. Settings, playlists, users and media are not affected.
Installed version: Settings → Info. “Update incomplete” means program and web interface versions don't match – run the setup again and restart PlyCast.
Accounts and roles
Administrators manage accounts under Settings → Users: username, initial password (min. six characters), role, then Add. New accounts must change the initial password at first sign-in.
Works with media, playlists, playout and templates. Can assign existing categories, Logos and CGs. No system settings, users or graphic definitions.
Everything a User can, plus Settings, account management, creating and editing categories/Logos/CGs, Plugin editor and server controls.
Passwords
- Reset another user: Password in the user's row, enter a temporary password and share it securely. Current sessions become invalid; the user must change it at next sign-in.
- Change your own: user menu → Change password. Previous sessions are invalidated.
- “Password pending” means the user still has to set a personal password.
SFTP upload
- Tick SFTP upload in a User's row – same credentials. Users can upload and manage folders but not delete files. Administrators always have SFTP access and are the only ones to see
/_Overlaysand/_CG. - Auto re-index: about 10 s after the last video upload finishes – several uploads trigger one re-index.
/_Overlaysand/_CGneed none. - Brute-force protection: after 5 failed logins the IP is blocked for 10 minutes.
- On-air protection: a file on air, cued or scheduled within 15 minutes cannot be overwritten, renamed or deleted – the client shows “file is on air or cued, try again later”.
- SFTP login is unavailable while a password change is pending.
Connect with FileZilla
| Field | Value |
|---|---|
| Protocol | SFTP – SSH File Transfer Protocol (not FTP or FTPS) |
| Host | IP or hostname of the PlyCast computer (sftp://[server IP] also works) |
| Port | SFTP port from Settings → Info → Ports (e.g. 8001) |
| Logon type | Normal |
| User / Password | Your PlyCast credentials |
Accept the host key only after verifying the machine. If login fails, check the SFTP permission, a pending password change and whether the port is reachable.
API permission
- Tick API in an account's row to allow
/api/nowplayingand/api/alarmswith HTTP Basic Auth – applies to all roles, including administrators. Unticking removes access immediately. - Blocked while a password change is pending; after a reset, clients must use the new password.
Endpoints
| Request | Returns |
|---|---|
GET /api/nowplaying | All channels. |
GET /api/nowplaying?ch=2 | One channel. Unknown channel → 404. |
GET /api/alarms | Active alarms and recent problems. ?limit= sets the count (default 50, max 500). |
Example: http://[server IP]:8000/api/nowplaying – web port from Settings → Info → Ports. CORS * is allowed.
Response
- Top level:
server_time(ISO 8601 with offset),server_time_ms(epoch ms),channels. - Each channel:
channel,name,playing,current,next. Withplaying: false,currentandnextarenull. current/next:type(clipor function such aswait,pause),title,filename(relative to media folder;nullfor functions),item_id,start,end,start_ms,end_ms,duration(after IN/OUT),position,remaining– in seconds.nextis the next real clip – Wait, Comment and Goto are skipped, loops are followed.
Example: show it on a web page
const auth = 'Basic ' + btoa('display:password');
async function load() {
const r = await fetch('http://SERVER:8000/api/nowplaying?ch=1', { headers: { Authorization: auth } });
const c = (await r.json()).channels[0];
now.textContent = c.playing ? c.current.title : 'Off air';
next.textContent = c.next ? c.next.title : '';
}
load(); setInterval(load, 5000); // countdown: end_ms − server_time_ms
For countdowns, calculate from end_ms and server_time_ms instead of polling every second.
Alarms endpoint
ok is false as soon as an active alarm has level error. active lists current problems per channel, recent the error and warning events of today and yesterday from the As-Run log. Works independently of email alerts.
Access with username and password
HTTP Basic Auth with an account that has the API right. Missing or wrong credentials, a missing API right or a pending password change return 401 (after a one-second delay).
curl -u display:password http://[server IP]:8000/api/alarms
public_api.token key is no longer used.Checklist
- Automatic sign-in for the Windows user – otherwise PlyCast won't start after a restart until someone signs in.
- Windows Update: no automatic restarts during transmission – schedule a maintenance window.
- Virus scanner: exclude the PlyCast and media folders from real-time scanning.
- Power settings: never sleep, never turn off disks.
- Alerts: enable and test email alerts – without an open browser they're your main notice of problems.
- External monitoring (optional): poll the alarms endpoint, or set
"monitoring": {"heartbeat_url": "https://…", "heartbeat_interval": 60}– PlyCast pings the URL every 60 s while CasparCG is connected. - Testing: run a new version for a day or two on the playout computer before using it on air.
| Key | Default | Effect |
|---|---|---|
launcher.memory_limit_mb | "auto" | Memory limit for PlyCast and FFmpeg: installed memory minus 6 GB, min. 4 GB. 0 = no limit. CasparCG not included. |
casparcg.watchdog_interval | 10 | Seconds between CasparCG checks; 0 = off. |
casparcg.hang_restart_s | 60 | Restart CasparCG if unresponsive this long; 0 = off. |
media.allow_mass_remove | false | Allows a re-index to remove more than half the index at once. |
output_monitor | see above | Freeze and silence detection. |
Solve a problem
| Symptom | Check |
|---|---|
| White, unstyled page with lots of text and images | Clear cookies and site data for the PlyCast address, reload (hard refresh) and confirm the address. |
| Port already in use | Stop the conflicting process or choose a free port in config.json, restart. Check AMCP separately from web, SFTP, live preview and output monitoring. |
| No media listed | Check the media directory, re-index, review Tasks. |
| Re-index fails after first installation | Create a bin folder inside webdoc if missing, restart PlyCast, re-index. |
| File unavailable | Run the playlist file check; confirm the file is in the media folder at the indexed path. |
| Server disconnected | Video server indicator, CasparCG host/port in Settings, As-Run log. |
| Unexpected timing | Compare server clock, clip IN/OUT and Wait, Fixstart and Goto entries. |
| No browser live preview | Try still-image mode and check playout state separately – a missing preview doesn't prove output is stopped. |
| Emergency list on air | Playlist ended or a clip failed. Check the As-Run log, fix file or playlist; playback continues with the next item. |
| No SCTE-104 downstream | DeckLink: VANC, 10-bit YUV, scte104-line and device in CasparCG form and function, restart CasparCG. Log should show VANC support at startup and 202 APPLY OK per cue. Encoder: enable SCTE-104 extraction on the SDI input and include an SCTE-35 PID. |
| Encoder receives SCTE-104 but no SCTE-35 (error 122) | Pre-roll too small – set 6000 ms or more. |
| SCTE-104 over IP fails | Host, port (default 5167), firewall. As-Run shows the reply, e.g. connection refused or ERROR init_response. |
| HTTP API call failed | URL, method and JSON body – As-Run shows status or error. |
| “Update incomplete” | Run the new setup again and restart PlyCast. |
| SMTP/MariaDB password empty | config.json was copied from another computer – re-enter the passwords in Settings. |
| Command rejected | As-Run error filter, media path, server connection. Admins can enable command-error alerts. |
| Re-index stops: “Media folder appears empty” / “Only … files found” | Folder unreachable or incomplete; the index was kept. Check drive or share and re-index. Removed many files on purpose? See index protection. |
| SFTP: “file is on air or cued” | On air or scheduled within 15 min. Upload under a new name or wait until played. |
| No thumbnails in media list | Created after re-index – check Tasks. Still missing: clear Thumbnails & waveforms in Settings → Cache. |
| In/Out editor: “Preview could not be created” | File couldn't be read for the proxy. Check it exists and plays in CasparCG, clear proxies in Settings → Cache, reopen. |
| Freeze or silence alarm on a correct clip | Clip contains a still or silence longer than the limit – adjust output_monitor. |
| PlyCast doesn't start after Windows restart | Set up automatic sign-in for the Windows user. |
| API returns 401 | Username and password, API checkbox under Settings → Users, pending password change. |

What's new
The most important changes per release. The installed version is shown under Settings → Info; how to update is described in Updates and version.
- Groups: named, collapsible blocks of playlist and template entries. More
- Media list with thumbnails and waveforms, created in the background after indexing.
- Media info: preview player, technical details, loudness, user-defined categories and comments – all searchable.
- Preview for every format (MXF, ProRes, DNxHD …) via preview proxy, with waveform.
- Cache tab for thumbnails, waveforms and proxies.
- Output monitoring: alarms for frozen or black picture and missing audio on air.
- Live stream quality selectable from 240p to 720p · up to four channels.
- 24/7: automatic CasparCG restart on hang, index protection, SFTP on-air protection, adaptive memory limit.
- Smaller installer; “Start with Windows” no longer starts PlyCast twice.
- Two channels, each with its own playlist, name, preview, emergency list and As-Run log.
- Emergency list: per-channel fallback loop. More
- New functions: Pause, SCTE-104 and HTTP API.
- Media conversion to MXF in the channel's video standard – loudness, broadcast-safe levels, colour space, optional deletion of originals.
- Scope: waveform and luma histogram · As-Run export to MariaDB with channel filter.
- CasparCG form editor with XML view, Restart tab.
- Now playing API and alarms endpoint · eight interface languages · update notice.
- Logo/CG URLs loaded unchanged; passwords in
config.jsonstored encrypted.
Need a hand
on air?
PlyCast runs 24/7 in more than 60 TV stations. Need setup help, SCTE-104 integration or the complete channel as a service?
