PrismCast

v1.10.3 GitHub · More by HJD
Connecting...
No active streams

What Is PrismCast?

PrismCast captures live video from web-based TV players by driving a real Chrome browser. It navigates to streaming sites, captures the screen and audio output, and serves the result as HLS streams over HTTP. For TV Everywhere sites that deliver non-DRMed streams, PrismCast can also bypass screen capture entirely and consume the stream directly at full service quality with significantly lower CPU usage. Think of it as a virtual TV tuner for web-based content — it lets Channels DVR (and other applications) record and watch content from streaming sites that do not offer direct video URLs.

PrismCast is built around three priorities, in order:

  1. Reliability — tuning a channel always delivers that channel. When the primary approach fails, fallback strategies ensure the tune still succeeds.
  2. Health monitoring — once a channel is playing, PrismCast continuously monitors the stream and takes corrective action automatically if issues arise.
  3. Speed — tuning and recovery should be as fast as possible, but never at the expense of reliability.

The ordering is intentional. PrismCast will always choose the reliable path over the fast one.

Video Quality

PrismCast delivers H.264 video with AAC stereo audio at configurable quality presets ranging from 480p to 1080p. Quality presets can be changed in the Configuration tab.

For screen-captured channels, this is not a replacement for native 4K, HDR, Dolby Vision, or surround sound — PrismCast captures directly from Chrome's media pipeline with no video transcoding, which is why tuning is fast and CPU usage stays low. For channels using native HLS streaming (TV Everywhere sites with non-DRMed streams), PrismCast delivers the service's original stream quality without screen capture limitations. The result is good quality video that works well for everyday viewing and DVR recording. PrismCast is designed for content you cannot get any other way in Channels DVR: network streaming sites, free ad-supported TV, and live channels that only exist on the web.

Quick Start

To add PrismCast channels to Channels DVR:

  1. Go to Settings → Custom Channels in your Channels DVR server.
  2. Click Add Source and select M3U Playlist.
  3. Enter the playlist URL: https://prismcast.nfxnicaragua.com/playlist
  4. Set Stream Format to HLS.
  5. Optionally, go to the Channels tab and set the service filter to only include streaming services you subscribe to. This controls which channels Channels DVR sees in the playlist.
  6. Your configured channels will be imported automatically.

Individual channels can also be streamed directly using HLS URLs like https://prismcast.nfxnicaragua.com/hls/nbc/stream.m3u8.

Plex Integration

PrismCast includes builtin HDHomeRun emulation, allowing Plex to use it as a network tuner for live TV and DVR recording.

  1. In Plex, go to Settings → Live TV & DVR → Set Up Plex DVR.
  2. Enter your PrismCast server address with port 5004 (e.g., 192.168.1.100:5004).
  3. Plex will detect PrismCast as an HDHomeRun tuner and import available channels.

HDHomeRun emulation is enabled by default and can be configured in the HDHomeRun / Plex configuration tab.

Tuning Speed

When a client requests a channel, PrismCast navigates Chrome to the streaming site, locates the video player, starts capture, and serves the first HLS segment. How long this takes depends on the channel type:

Direct URL Channels (~3–5 seconds)

Sites where PrismCast navigates directly to a player page and video starts automatically. Examples: NBC, ABC, Paramount+, USA Network.

Guide-Based Services — First Tune (~5–10 seconds)

Sites where PrismCast navigates a live TV guide to find and select the channel. The first tune for a given channel is slower because the guide grid must be searched. Examples: Cox Contour TV, DirecTV Stream, Fox, HBO Max, Hulu, Sling TV, Spectrum TV, Xfinity Stream, YouTube TV.

Note: Cox Contour TV and Xfinity Stream players are slow to initialize — expect 15–30 seconds for channel changes. This is a limitation of the web player, not PrismCast.

Guide-Based Services — Subsequent Tunes (~3–5 seconds)

After the first tune, PrismCast caches channel data for DirecTV Stream, Fox, HBO Max, Hulu, Sling TV, Spectrum TV, YouTube TV. Subsequent tunes skip guide navigation entirely and are comparable to direct URL channels. If cached data becomes stale, PrismCast falls back to guide navigation transparently. Cox Contour TV and Xfinity Stream do not benefit from this optimization — each tune requires a full page load of the player.

Idle Window

Streams stay alive for 30 seconds after the last client disconnects (configurable in the Configuration tab). This means channel surfing in Channels DVR is instant for recently-viewed channels — no re-tuning is needed. Combined with channel caching, the system gets faster the more you use it.

Channel Authentication

Many streaming channels require TV provider authentication before content can be accessed. To authenticate:

  1. Go to the Channels tab.
  2. Click the Login button next to the channel you want to authenticate.
  3. A browser window will open with the channel's streaming page.
  4. Complete the TV provider sign-in process in the browser.
  5. Click Done when authentication is complete.

Your login credentials are saved in the browser profile and persist across restarts. You only need to authenticate once per TV provider. The Channels tab shows green and red indicators next to each channel reflecting the last tune result, and authentication badges that confirm which services have active sessions. Some TV providers periodically expire sessions on their end, requiring re-authentication. This is a service limitation, not a PrismCast issue — simply click Login again to re-authenticate.

If PrismCast is running headless or on a remote server, use a VNC client to access the browser for authentication.

Working with Channels

Predefined Channels

PrismCast ships with channels across multiple streaming services, maintained and updated with each release. You can disable any channels you do not need from the Channels tab. The predefined set covers common networks and is a good starting point — enable what you watch and disable the rest. You can also override any predefined channel with your own custom definition (see Overriding Predefined Channels below).

Service Variants

Some channels (Comedy Central, Fox, NBC, etc.) are available from multiple streaming services. The service dropdown on each channel lets you choose which service to use for that channel. Different services may offer different tuning performance.

Service Filter

If you only subscribe to certain streaming services, use the service filter on the Channels tab toolbar to show only relevant channels. This filter also controls which channels appear in the playlist that Channels DVR imports — set it before adding the playlist source in the Quick Start. You can also filter programmatically using the ?service= query parameter on the playlist URL.

Bulk Operations

The Set all channels to dropdown on the Channels tab toolbar switches every multi-service channel to a single service at once. This is useful when you want all channels routed through one streaming service. The operation can be undone by switching individual channels back or selecting a different service from the same dropdown.

User-Defined Channels

You can add custom channels for any streaming site. Provide a URL, select a site profile, and PrismCast will capture it. For sites with multiple live channels (like a live TV service), the Channel Selector field tells PrismCast which channel to tune to — the expected value depends on the service. When adding or editing a channel, select a profile to see the Profile Reference section with site-specific guidance, including expected channel selector formats for known services.

User-Defined Service Profiles

You can add support for streaming sites that PrismCast does not have builtin support for. The Custom Profiles tab includes a step-by-step wizard that guides you through creating a custom site profile — defining how to enter fullscreen, handle iframes, and interact with the player. You can also export your profiles as service packs to share with other PrismCast users, and import packs that others have created.

Overriding Predefined Channels

To override a predefined channel, create a user-defined channel with the same channel key. Both versions will appear in the service dropdown — yours labeled Custom and the original with its service name. You can switch between them at any time.

For automation and integration with other workflows, see the API Reference tab for the full HTTP API.

Requirements

See the Help tab for platform-specific requirements and troubleshooting.

Define and manage streaming channels for the playlist. Customized channels are highlighted.

Tip: Use the service filter above to show only channels from services you subscribe to — this also controls which channels Channels DVR sees in the playlist. Use the service dropdown on any multi-service channel to choose which streaming service delivers it (e.g., Comedy Central via Hulu vs Sling). Click the edit icon to customize any channel's name, Gracenote station ID, URL, or other properties.

213 channels (213 predefined) · 213 enabled · 0 disabled
Key Name ▲ Service Number HDHR Station ID Profile Selector Tags Actions
ae A&E 51529 A&E (auto)
aep A&E (Pacific) 57439 A&E (auto)
abc ABC ABC.com (auto)
abcnews ABC News Live 113380 Cox Contour TV (auto) ABCNL
espnacc ACC Network 111871 ESPN.com (auto)
amc AMC 59337 Cox Contour TV (auto) AMC
amcp AMC (Pacific) 78836 Cox Contour TV (auto) AMC
amcthrillers AMC Thrillers 115678 Sling TV (auto) AMC Thrillers
ahc American Heroes 78808 Food Network (auto)
animal Animal Planet 57394 Food Network (auto)
animalp Animal Planet (Pacific) 68785 Food Network (auto)
axstv AXS TV 28506 Cox Contour TV (auto) AXS TV
bbcamerica BBC America 64492 Cox Contour TV (auto) BBC America
bbcamericap BBC America (Pacific) 76739 Cox Contour TV (auto) BBC America
bbcnews BBC News (North America) 101449 Cox Contour TV (auto) BBC News
bet BET 63236 BET.com (auto)
betp BET (Pacific) 64673 BET.com (auto)
bether BET Her 63220 Cox Contour TV (auto) BET Her
betherp BET Her (Pacific) 97360 Cox Contour TV (auto) BET Her
bigten Big 10 58321 Fox Sports (auto)
bloombergoriginals Bloomberg Originals YouTube TV 175656 YouTube TV (auto) Bloomberg Originals
bloomberg Bloomberg Television 71799 Cox Contour TV (auto) Bloomberg
bravo Bravo 58625 NBC.com (auto)
bravop Bravo (Pacific) 73994 NBC.com (auto)
cspan C-SPAN 68344 C-SPAN.org (auto)
cspan2 C-SPAN 2 68334 C-SPAN.org (auto)
cspan3 C-SPAN 3 68332 C-SPAN.org (auto)
cartoon Cartoon Network 60048 Cox Contour TV (auto) Cartoon Network
cartoonp Cartoon Network (Pacific) 67703 Cox Contour TV (auto) Cartoon Network
cbs CBS CBS.com (auto)
cbsnews CBS News 24/7 104846 Hulu (auto) CBS News 24/7
cbssports CBS Sports Network 59250 Cox Contour TV (auto) CBS Sports Network
cmt CMT 59440 Cox Contour TV (auto) CMT
cmtp CMT (Pacific) 64610 Cox Contour TV (auto) CMT
cnbc CNBC 58780 CNBC.com (auto)
cnbcworld CNBC World 26849 DirecTV Stream (auto) CNBC World
cnn CNN 58646 CNN.com (auto)
cnni CNN International 83110 CNN.com (auto)
comedycentral Comedy Central 62420 Cox Contour TV (auto) Comedy Central
comedycentralp Comedy Central (Pacific) 64599 Cox Contour TV (auto) Comedy Central
cooking Cooking 68065 Food Network (auto)
cw CW Cox Contour TV (auto) CW TV
destinationamerica Destination America 60468 Food Network (auto)
discovery Discovery 56905 Food Network (auto)
discoveryp Discovery (Pacific) 80399 Food Network (auto)
discoverylife Discovery Life 92204 Food Network (auto)
discoveryturbo Discovery Turbo 31046 Food Network (auto)
disney Disney 59684 DisneyNOW (auto)
disneyp Disney (Pacific) 63320 DisneyNOW (auto)
disneyjr Disney Jr. 74885 DisneyNOW (auto)
disneyjrp Disney Jr. (Pacific) 75004 DisneyNOW (auto)
disneyxd Disney XD 60006 DisneyNOW (auto)
disneyxdp Disney XD (Pacific) 63322 DisneyNOW (auto)
e E! 61812 USA Network (auto) E-_East
ep E! (Pacific) 91579 USA Network (auto) E-_West
espn ESPN 32645 ESPN.com (auto)
espndeportes ESPN Deportes 71914 ESPN.com (auto)
espn2 ESPN2 45507 ESPN.com (auto)
espnews ESPNews 59976 ESPN.com (auto)
espnu ESPNU 60696 ESPN.com (auto)
food Food Network 50747 Food Network (auto)
foodp Food Network (Pacific) 82119 Food Network (auto)
fox Fox Cox Contour TV (auto) Fox
fbc Fox Business 58718 Fox Business (auto)
foxdeportes Fox Deportes 72189 Fox Sports (auto)
fnc Fox News 60179 Fox News (auto)
foxsoccerplus Fox Soccer Plus 66879 Fox Sports (auto)
france24 France 24 60961 France 24 (auto)
france24fr France 24 (French) 58685 France 24 (auto)
freeform Freeform 59615 Freeform (auto)
freeformp Freeform (Pacific) 63324 Freeform (auto)
fs1 FS1 82547 Fox Sports (auto)
fs2 FS2 59305 Fox Sports (auto)
fx FX 58574 ABC.com (auto)
fxp FX (Pacific) 59814 ABC.com (auto)
fxm FXM 70253 ABC.com (auto)
fxmp FXM (Pacific) 98488 ABC.com (auto)
fxx FXX 66379 ABC.com (auto)
fxxp FXX (Pacific) 82571 ABC.com (auto)
fyi FYI 58988 FYI (auto)
fyip FYI (Pacific) 92372 FYI (auto)
gameshow Game Show Network 68827 Cox Contour TV (auto) Game Show Network
gameshowp Game Show Network (Pacific) 90210 Cox Contour TV (auto) Game Show Network
golf Golf 61854 Golf Channel (auto)
hallmark Hallmark 66268 Cox Contour TV (auto) Hallmark Channel
hallmarkp Hallmark (Pacific) 66415 Cox Contour TV (auto) Hallmark Channel
hallmarkfamily Hallmark Family 105723 Cox Contour TV (auto) HFM
hallmarkmystery Hallmark Mystery 46710 Cox Contour TV (auto) HMYS
hallmarkmysteryp Hallmark Mystery (Pacific) 66412 Cox Contour TV (auto) HMYS
hbo HBO 19548 HBO Max (auto) HBO
hbocomedy HBO Comedy 59839 HBO Max (auto) HBO Comedy
hbodrama HBO Drama 59363 HBO Max (auto) HBO Drama
hbohits HBO Hits 59368 HBO Max (auto) HBO Hits
hbomovies HBO Movies 59845 HBO Max (auto) HBO Movies
hgtv HGTV 49788 Food Network (auto)
hgtvp HGTV (Pacific) 87317 Food Network (auto)
history History 57708 History.com (auto)
historyp History (Pacific) 88545 History.com (auto)
hln HLN 64549 CNN.com (auto)
ifc IFC 59444 Cox Contour TV (auto) IFC
ifcp IFC (Pacific) 109735 Cox Contour TV (auto) IFC
indieplex IndiePlex 65795 Hulu (auto) IndiePlex (East)
indieplexp IndiePlex (Pacific) 65796 Hulu (auto) IndiePlex (West)
id Investigation Discovery 65342 Food Network (auto)
idp Investigation Discovery (Pacific) 80309 Food Network (auto)
lifetime Lifetime 60150 Lifetime (auto)
lifetimep Lifetime (Pacific) 60250 Lifetime (auto)
lmn Lifetime Movie Network 55887 Cox Contour TV (auto) Lifetime Movies
lmnp Lifetime Movie Network (Pacific) 92373 Cox Contour TV (auto) Lifetime Movies
magnolia Magnolia Network 67375 Food Network (auto)
magnoliap Magnolia Network (Pacific) 122081 Food Network (auto)
mgmplus MGM+ 65687 Cox Contour TV (auto) MGM+
mgmplusp MGM+ (Pacific) 95927 Cox Contour TV (auto) MGM+
mlb MLB Network 62081 Cox Contour TV (auto) MLB Network
movieplex MoviePlex 83075 Hulu (auto) MoviePlex (East)
movieplexp MoviePlex (Pacific) 105963 Hulu (auto) MoviePlex (West)
msnow MS NOW 64241 MS NOW (auto)
msg MSG DirecTV Stream 35402 DirecTV Stream (auto) MSG
msgsn MSG Sportsnet DirecTV Stream 35383 DirecTV Stream (auto) MSG Sportsnet HD 635
mtv MTV 60964 Cox Contour TV (auto) MTV
mtvp MTV (Pacific) 64630 Cox Contour TV (auto) MTV
mtvclassic MTV Classic 92240 Cox Contour TV (auto) MTV Classic
mtv2 MTV2 75077 Cox Contour TV (auto) MTV2
mtv2p MTV2 (Pacific) 75506 Cox Contour TV (auto) MTV2
natgeowild Nat Geo Wild 67331 Nat Geo (auto)
natgeo National Geographic 49438 Nat Geo (auto)
natgeop National Geographic (Pacific) 71601 Nat Geo (auto)
nba NBA TV 45526 NBA.com (auto)
nbc NBC NBC.com (auto)
nbcnews NBC News Now 114174 NBC.com (auto)
nbcsbayarea NBC Sports Bay Area NBC.com 63138 NBC.com (auto)
nbcsboston NBC Sports Boston NBC.com 49198 NBC.com (auto)
nbcscalifornia NBC Sports California NBC.com 45540 NBC.com (auto)
nbcsn NBC Sports Network YouTube TV 194412 YouTube TV (auto) NBC Sports Network
nbcsphiladelphia NBC Sports Philadelphia NBC.com 32571 NBC.com (auto)
necn NECN NBC.com 66278 NBC.com (auto)
nfl NFL Network 45399 Cox Contour TV (auto) NFL Network
nhl NHL Network 58690 Cox Contour TV (auto) NHL Network
own OWN 70388 Food Network (auto)
oxygen Oxygen 70522 USA Network (auto) Oxygen_East
oxygenp Oxygen (Pacific) 74032 USA Network (auto) Oxygen_West
paramountp Paramount (Pacific) 64593 Cox Contour TV (auto) Paramount Network
paramount Paramount Network 59186 Cox Contour TV (auto) Paramount Network
pbs PBS Cox Contour TV (auto) PBS
pbschicago PBS Chicago (WTTW) 30415 WTTW (auto)
pbslakeshore PBS Lakeshore (WYIN) 49237 Lakeshore PBS (auto)
retroplex RetroPlex 65791 Hulu (auto) RetroPlex (East)
retroplexp RetroPlex (Pacific) 65793 Hulu (auto) RetroPlex (West)
science Science 57390 Food Network (auto)
espnsec SEC Network 89714 ESPN.com (auto)
showtime Showtime 91620 Cox Contour TV (auto) PSHOh
showtimep Showtime (Pacific) 91621 Cox Contour TV (auto) PSHOh
smithsonian Smithsonian Channel 58532 Cox Contour TV (auto) Smithsonian
smithsonianp Smithsonian Channel (Pacific) 82695 Cox Contour TV (auto) Smithsonian
sny SportsNet New York DirecTV Stream 50038 DirecTV Stream (auto) SportsNet New York HD 639
starz Starz 34941 Starz (auto)
starzp Starz (Pacific) 34949 Starz (auto)
starzcinema Starz Cinema 67236 Hulu (auto) STARZ Cinema (East)
starzcinemap Starz Cinema (Pacific) 67365 Hulu (auto) STARZ Cinema (West)
starzcomedy Starz Comedy 57569 Hulu (auto) STARZ Comedy (East)
starzcomedyp Starz Comedy (Pacific) 57575 Hulu (auto) STARZ Comedy (West)
starzedge Starz Edge 57573 Hulu (auto) STARZ Edge (East)
starzedgep Starz Edge (Pacific) 57578 Hulu (auto) STARZ Edge (West)
starzencore Starz Encore 36225 Cox Contour TV (auto) STZEH
starzencorep Starz Encore (Pacific) 67237 Cox Contour TV (auto) STZEH
starzencoreaction Starz Encore Action 72015 Cox Contour TV (auto) STZAH
starzencoreactionp Starz Encore Action (Pacific) 103833 Cox Contour TV (auto) STZAH
starzencoreblack Starz Encore Black 72014 Cox Contour TV (auto) STZBH
starzencoreblackp Starz Encore Black (Pacific) 103834 Cox Contour TV (auto) STZBH
starzencoreclassic Starz Encore Classic 83404 Hulu (auto) STARZ Encore Classic (East)
starzencoreclassicp Starz Encore Classic (Pacific) 97233 Hulu (auto) STARZ Encore Classic (West)
starzencoreespanol Starz Encore Español 72016 Hulu (auto) STARZ Encore Español (East)
starzencoreespanolp Starz Encore Español (Pacific) 104730 Hulu (auto) STARZ Encore Español (West)
starzencorefamily Starz Encore Family 14886 Hulu (auto) STARZ Encore Family (East)
starzencorefamilyp Starz Encore Family (Pacific) 103829 Hulu (auto) STARZ Encore Family (West)
starzencoresuspense Starz Encore Suspense 83076 Hulu (auto) STARZ Encore Suspense (East)
starzencoresuspensep Starz Encore Suspense (Pacific) 103836 Hulu (auto) STARZ Encore Suspense (West)
starzencorewesterns Starz Encore Westerns 14765 Hulu (auto) STARZ Encore Westerns (East)
starzencorewesternsp Starz Encore Westerns (Pacific) Hulu 103856 Hulu (auto) STARZ Encore Westerns (West)
starzinblack Starz in Black 67235 Hulu (auto) STARZ in Black (East)
starzinblackp Starz in Black (Pacific) 67367 Hulu (auto) STARZ in Black (West)
starzkids Starz Kids 57581 Hulu (auto) STARZ Kids (East)
starzkidsp Starz Kids (Pacific) 57583 Hulu (auto) STARZ Kids (West)
sundancetv SundanceTV 71280 Cox Contour TV (auto) SundanceTV
sundancetvp SundanceTV (Pacific) 78806 Cox Contour TV (auto) SundanceTV
syfy Syfy 58623 USA Network (auto) Syfy_East
syfyp Syfy (Pacific) 65626 USA Network (auto) Syfy_West
tbs TBS 58515 TBS.com (auto)
tbsp TBS (Pacific) 67890 TBS.com (auto)
tcm TCM 64312 Cox Contour TV (auto) TCM
tcmp TCM (Pacific) 64312 Cox Contour TV (auto) TCM
tennis Tennis Channel 60316 Cox Contour TV (auto) Tennis Channel
tennis2 Tennis Channel 2 137752 Cox Contour TV (auto) T2
weather The Weather Channel 58812 Cox Contour TV (auto) Weather Channel
tlc TLC 57391 Food Network (auto)
tlcp TLC (Pacific) 79911 Food Network (auto)
tnt TNT 42642 TNT (auto)
tntp TNT (Pacific) 61340 TNT (auto)
travel Travel 59303 Food Network (auto)
travelp Travel (Pacific) 64525 Food Network (auto)
trutv truTV 64490 truTV (auto)
trutvp truTV (Pacific) 65717 truTV (auto)
tvland TV Land 73541 Cox Contour TV (auto) TV Land
tvlandp TV Land (Pacific) 74134 Cox Contour TV (auto) TV Land
usa USA Network 58452 USA Network (auto) USA_East
usap USA Network (Pacific) 74030 USA Network (auto) USA_West
vh1 VH1 60046 VH1.com (auto)
vh1p VH1 (Pacific) 64634 VH1.com (auto)
vice Vice 65732 Cox Contour TV (auto) VICE
vicep Vice (Pacific) 92375 Cox Contour TV (auto) VICE
wetv WE tv 59296 Cox Contour TV (auto) WE tv
wetvp WE tv (Pacific) 108192 Cox Contour TV (auto) WE tv
yes YES Network 63558 DirecTV Stream (auto) Yes Network HD

Define custom site profiles and domain mappings to add support for streaming services not built into PrismCast.

Tip: Use the Profile Builder wizard to create new profiles step by step, or Import a pre-made service pack shared by others. User profiles extend builtin profiles and can override specific behaviors like channel selection strategy or playback controls.

No custom services installed

Custom services let you add support for streaming sites not built into PrismCast. Click New Profile to create one using the step-by-step wizard, or Import a service pack shared by another user.

Connecting...
Environment Variable Overrides
Some settings are overridden by environment variables and cannot be changed through this interface. To modify these settings, update your environment variables and restart the server.

Configure common server and streaming options.

Reset to Defaults
Server
TCP port for the HTTP server. Channels DVR and other clients connect here.
Default: 5589
IP address to bind the HTTP server. Use 0.0.0.0 for all interfaces, 127.0.0.1 for local only.
Default: 0.0.0.0
Browser
Path to Chrome executable. Leave empty to autodetect.
Default: autodetect
Overridden by environment variable: CHROME_BIN=/usr/local/bin/chrome-no-sandbox
seconds
Maximum wait after browser launch for the puppeteer-stream extension to initialize. The system polls for readiness and proceeds early when ready. Increase if streams start with blank frames.
Default: 3 seconds
Startup
Speed up your first channel tune by loading service lineups when PrismCast starts. Normally, each service's lineup is loaded on your first tune, which may add a few extra seconds. Enabling precaching fetches lineups at startup so even your very first tune is fast. Services not enabled in the Channels tab service filter are skipped at startup. Ensure you've logged into each service before enabling.
Default: none
Capture
FFmpeg (recommended) provides reliable capture for long recordings. Native mode captures directly from Chrome without an external process, but may require stream recovery after 20-30 minutes of continuous use.
Native capture mode is temporarily disabled due to a Chrome bug that causes fMP4 MediaRecorder to produce corrupt output after 20-30 minutes of continuous recording. FFmpeg mode is required until a future Chrome release resolves this issue.
Default: ffmpeg
Video codecs allowed for browser capture. H.264 is always available as the universal baseline. Additional codecs require GPU hardware encoding support - codecs without hardware support are shown as disabled.
Default: h264, hevc
Video quality preset. Determines capture resolution. Bitrate and frame rate can be further customized.
Default: 720p-high
Mbps
Video bitrate for browser capture. HLS copies this stream directly (no re-encoding). 8Mbps suits 720p; 15-20Mbps for 1080p.
Default: 12 Mbps
kbps
Audio bitrate for browser capture. HLS copies this stream directly (no re-encoding). 256kbps provides high-quality stereo audio.
Default: 256 kbps
fps
Target frame rate. 60fps is ideal for sports; 30fps works for most TV content.
Default: 60 fps
HDHomeRun / Plex
Enable HDHomeRun emulation for Plex integration. When enabled, PrismCast runs a second HTTP server that emulates an HDHomeRun tuner, allowing Plex to use PrismCast as a live TV source. In Plex, go to Settings > Live TV & DVR > Set Up Plex DVR and enter this server's address manually as IP:port (e.g., 192.168.1.100:5004).
Default: true
TCP port for the HDHomeRun emulation server. This is the port you enter in Plex when manually adding the tuner (e.g., 192.168.1.100:5004).
Default: 5004
Display name shown in Plex for this tuner. Helps identify PrismCast when you have multiple HDHomeRun devices.
Default: PrismCast

Expert tuning options. The defaults work well for most setups.

Reset All to Defaults
Channels DVR (1 setting)
TCP port for the user's Channels DVR API. PrismCast polls Channels DVR over HTTP for show-info, device-mapping discovery, and pretune scheduling. Defaults to 8089, which is the canonical Channels DVR port. Override only when the user has changed the DVR's listen port from its default.
Default: 8089
HLS (3 settings)
seconds
Target duration for each HLS segment. Shorter segments reduce latency but increase overhead.
Default: 2 seconds
Maximum segments to keep in memory per stream. Controls buffer depth and memory usage.
Default: 10
seconds
Time before an idle HLS stream is terminated. Applies when no segment requests are received.
Default: 30 seconds
Logging (2 settings)
HTTP request logging level. "none" disables logging, "errors" logs only 4xx/5xx responses, "filtered" logs important requests while skipping high-frequency endpoints, "all" logs everything.
Default: errors
MB
Maximum log file size in bytes. When exceeded, the file is trimmed to half this size keeping the most recent logs.
Default: 1 MB
Paths (2 settings)
Absolute path override for Chrome's user data directory. When set, Chrome profile data is stored at this path instead of the default location inside the data directory. Useful for placing Chrome data on a different volume.
Default: autodetect
Absolute path override for the log file. When set, logs are written to this path instead of the default location inside the data directory.
Default: autodetect
Playback (11 settings)
seconds
Grace period for buffering before declaring a stall. Prevents false positives from brief network hiccups.
Default: 10 seconds
seconds
Delay after clicking a channel selector before checking for video.
Default: 5 seconds
seconds
Delay after channel switch for stream to stabilize before health monitoring begins.
Default: 4 seconds
seconds
Delay for iframe content to initialize before searching for video elements.
Default: 1.5 seconds
Maximum full page navigations allowed within the reload window. Prevents reload loops on broken streams.
Default: 3
seconds
Interval between playback health checks. Shorter intervals detect problems faster but use more CPU.
Default: 2 seconds
minutes
Time window for tracking page reload frequency. After this period, the reload counter resets.
Default: 15 minutes
seconds
Delay after reloading video source before resuming monitoring.
Default: 2 seconds
Consecutive stalled checks before triggering recovery.
Default: 2
seconds
Minimum change in video.currentTime (seconds) to consider playback progressing.
Default: 0.1 seconds
seconds
Duration of healthy playback required before resetting escalation level. Prevents stutter loops.
Default: 60 seconds
Recovery (6 settings)
seconds
Random jitter added to retry delays. Prevents thundering herd on retries.
Default: 1 second
Failures within circuit breaker window that trigger stream termination.
Default: 10
minutes
Time window for counting failures toward circuit breaker.
Default: 5 minutes
seconds
Maximum delay between retry attempts. Exponential backoff is capped at this value.
Default: 3 seconds
seconds
Interval between stale page cleanup runs. Identifies and closes orphaned browser pages.
Default: 60 seconds
seconds
Grace period before closing a page that appears stale. Prevents race conditions during initialization.
Default: 30 seconds
Streaming (4 settings)
Maximum simultaneous streams. Each stream uses a browser tab and resources.
Default: 10
Maximum navigation retry attempts before giving up.
Default: 4
seconds
Timeout for page navigation. Increase for slow networks or heavy pages.
Default: 10 seconds
seconds
Timeout for video element to become ready after navigation.
Default: 11 seconds

Export and import configuration and channel data. See the Backup and Migration section in the Help tab for details on what is included, what is not, and how to migrate to a new machine.

Settings Backup

Download Settings

Download your current server configuration as a JSON file. This includes all settings (server, browser, streaming, playback, etc.) but does not include channel definitions.

Import Settings

Import a previously saved settings file. After importing, you will need to restart PrismCast for changes to take effect.

Channels Backup

Download Channels

Download your custom channel definitions as a JSON file. This includes only user-defined channels, not the predefined channels built into PrismCast.

Import Channels

Import channel definitions from a previously saved file. This will replace all existing user channels.

Configuration file: /root/.prismcast/config.json

PrismCast provides a RESTful HTTP API for streaming, management, and diagnostics.

Playlist M3U playlist for Channels DVR. GET /playlist
Services Channel discovery, service selection, and playlist filtering. GET /services/:slug/channels PUT /config/channels/:key/service POST /config/service-filter
Authentication TV provider login sessions. POST /auth/login POST /auth/done
Management List channels, view and control active streams. GET /channels GET /streams DELETE /streams/:id
Settings Save, export, and import server configuration. POST /config GET /config/export POST /config/import
Diagnostics Health checks, logs, and real-time monitoring. GET /health GET /logs GET /logs/stream

Streaming

EndpointDescription
GET /hls/:name/stream.m3u8 HLS playlist for a named channel. Example: /hls/nbc/stream.m3u8
GET /hls/:name/init.mp4 fMP4 initialization segment containing codec configuration.
GET /hls/:name/:segment.m4s fMP4 media segment containing audio/video data.
GET /play Stream any URL without creating a channel definition. Pass the URL as ?url=<url>. Advanced: &profile= overrides auto-detection, &selector= picks a channel on multi-channel sites, &clickToPlay=true clicks the video to start playback, &clickSelector= specifies a play button element to click (implies clickToPlay).
GET /stream/:name MPEG-TS stream for HDHomeRun-compatible clients (e.g., Plex). Remuxes fMP4 to MPEG-TS with codec copy.

Playlist

EndpointDescription
GET /playlist M3U playlist of all channels in Channels DVR format. Use this URL when adding PrismCast as a custom channel source. Optional query parameters: ?service= filters by streaming service (?service=yttv, ?service=yttv,sling, ?service=-hulu). ?sort= overrides sort field (name, key, channelNumber, service,profile, stationId, channelSelector). ?direction= overrides sort direction (asc or desc). All parameters are optional and can be combined. Service filter only controls which channels appear in the playlist, not which service is used for tuning.

Channels

Channel definitions, import/export, and predefined channel management.

EndpointDescription
POST /config/channels Create a new user channel. Body is the channel object (key, name, url, and optional fields). Returns a channel table patch and a serviceWarning when the new channel's service isn't in the active filter.
PUT /config/channels/:key Replace an existing channel. Body is the full channel object. For predefined channels, the handler computes a delta against the canonical definition; submitting values matching the canonical or a sibling variant implicitly reverts the override.
PATCH /config/channels/:key Partial update from inline cell edits. Body contains exactly one of channelNumber, hdhrEnabled, stationId, or tags. A typed value sets the field; null clears it.
DELETE /config/channels/:key Delete a user channel. Fails if the key is not a user-defined channel. If a predefined version exists with the same key, the returned patch replaces the row with the predefined original.
POST /config/channels/:key/revert Remove a predefined channel override, restoring the predefined defaults.
GET /config/channels/export Export user-defined channels as a JSON file download.
POST /config/channels/import Import channels from JSON, replacing all existing user channels.
POST /config/channels/import-m3u Import channels from M3U playlist. Body: { "content": "...", "conflictMode": "skip" | "replace" }
POST /config/channels/toggle-predefined Enable or disable a single predefined channel. Body: { "key": "nbc", "enabled": true }. Response includes counts with enabled/total for all, east, and pacific scopes.
POST /config/channels/bulk-toggle-predefined Enable or disable predefined channels by scope. Body: { "enabled": true, "scope": "all" | "pacific" | "east" }. Response includes counts with enabled/total for all, east, and pacific scopes.
POST /config/channels/display-prefs Update channel table display preferences: sort field, sort direction, and visible optional columns. Body: { "sortField": "name", "sortDirection": "asc", "visibleColumns": ["channelNumber", "stationId"] }. All fields are optional. Persists to config file.

Services

Channel discovery, service selection, and filtering for multi-service channels.

EndpointDescription
GET /services/:slug/channels Discover all available channels for a service. Returns a JSON array of channel objects with name, channelSelector, and optional affiliate and tier fields. Service slugs: cox, directv, foxone, hbomax, hulu, sling, spectrum, xfinity, yttv. Returns cached results instantly when a prior tune or discovery call has already enumerated the lineup. Add ?refresh=true to clear caches and force a fresh discovery walk.
PUT /config/channels/:key/service Update service selection for a multi-service channel. Body: { "service": "nbc-hulu" }
POST /config/service-filter Set enabled service tags. Body: { "enabledServices": ["hulu", "yttv"] }. Empty array disables filter.
POST /config/service-bulk-assign Assign a service to all multi-service channels. Body: { "service": "hulu" }. Returns { affected, previousSelections, selections }
POST /config/service-bulk-restore Restore previous service selections (undo bulk assign). Body: { "selections": { "nbc": "nbc-hulu", "fox": null } }. A null value restores the channel to its default service.

Profiles

Custom site profiles and service pack distribution. Profiles define how PrismCast interacts with a streaming site. Service packs bundle profiles, domain mappings, and optional channels for sharing across instances.

EndpointDescription
GET /config/profiles List all user-defined profiles and domain mappings with associated channel counts.
POST /config/profiles Create or update a user-defined profile with optional domain mappings. Body: { "key": "myProfile", "profile": { "extends": "embeddedPlayer", ... }, "domains": { "example.com": { "profile": "myProfile" } } }
DELETE /config/profiles/:key Delete a user-defined profile and its associated domain mappings.
POST /config/profiles/import Import a service pack JSON file. Validates profiles, domains, and optional channels. Body: { "data": { ... }, "skipChannels": false }
GET /config/profiles/export Export user profile(s) as a service pack JSON file download. Query params: ?profile=key1,key2 (required), &channels=1 (include channels), &domains=0 (exclude domains), &name= (pack display name).

Authentication

EndpointDescription
POST /auth/login Start login mode for a channel. Body: { "channel": "name" } or { "url": "..." }
POST /auth/done End login mode and close the login browser tab.
GET /auth/status Get current login status including whether login mode is active and which channel.

Management

EndpointDescription
GET /channels List all channels (predefined + user) as JSON with source, enabled status, and channel metadata.
GET /streams List all currently active streams with their ID, channel, URL, duration, and status.
GET /streams/status Server-Sent Events stream for real-time stream and system status updates.
DELETE /streams/:id Terminate a specific stream by its numeric ID. Returns 200 on success, 404 if not found.

Settings

Server configuration and backup.

EndpointDescription
POST /config Save configuration settings. Returns { success, message, willRestart, deferred, activeStreams }
GET /config/export Export current configuration as a JSON file download.
POST /config/import Import configuration from JSON. Server restarts to apply changes (if running as service).
POST /config/restart-now Force immediate server restart regardless of active streams. Only works when running as a service.

Diagnostics

EndpointDescription
GET /health Health check returning JSON with browser status, memory usage, stream counts, and configuration.
GET /logs Recent log entries as JSON. Query params: ?lines=N (default 100, max 1000), ?level=error|warn|info
GET /logs/stream Server-Sent Events stream for real-time log entries. Query param: ?level=error|warn|info

Example: Health Check Response

{
  "browser": { "connected": true, "pageCount": 2 },
  "captureMode": "ffmpeg",
  "chrome": "Chrome/144.0.7559.110",
  "clients": { "byType": [{ "count": 1, "type": "hls" }], "total": 1 },
  "ffmpegAvailable": true,
  "memory": { "heapTotal": 120000000, "heapUsed": 85000000, "rss": 150000000, "segmentBuffers": 25000000 },
  "status": "healthy",
  "streams": { "active": 1, "limit": 10 },
  "timestamp": "2026-01-26T12:00:00.000Z",
  "uptime": 3600.5,
  "version": "1.0.12"
}

Updating PrismCast

Settings and channel configurations are preserved across updates.

Homebrew (macOS)

brew upgrade prismcast
prismcast service restart

npm

npm install -g prismcast
prismcast service restart

Docker

Pull the latest image and recreate the container. If using Watchtower, updates are applied automatically.

docker pull ghcr.io/hjdhjd/prismcast:latest
docker compose up -d

Backup and Migration

PrismCast stores all user data in a single directory (default: ~/.prismcast). The files that matter for backup are:

Using the Web UI

Go to Configuration → Backup to download and import settings and channels as JSON files. This is the easiest way to back up before an upgrade or transfer to another machine.

Manual Backup

Copy the data directory (~/.prismcast) or just the three JSON files listed above. To restore, place them in the data directory on the new machine and restart PrismCast. Docker users should ensure their container's data directory volume is backed up.

What Is Not Included

Service login sessions are stored in Chrome's profile data, not in the configuration files. After migrating to a new machine, you will need to re-authenticate with each TV provider through the browser. The health.json file (channel health and authentication state indicators) is also not exported — it rebuilds automatically as channels are tuned.

Display and Resolution

PrismCast captures video from Chrome's display output. The capture resolution must be smaller than the physical display resolution because browser toolbars and window chrome consume approximately 100–150 vertical pixels. For example, to capture at 1080p (1920×1080), the display must be larger than 1080p.

When the selected quality preset exceeds what the display can provide, PrismCast logs a warning and automatically degrades to the best available preset. This is not an error — PrismCast is adapting to your display.

Headless Servers

macOS works without a physical monitor. Windows and Linux servers without a display need an HDMI dummy plug or a virtual display adapter to provide a display resolution for Chrome to render into.

Remote Access

macOS Screen Sharing and VNC work correctly. Windows Remote Desktop (RDP) does not work — RDP creates a virtual display with different properties that interfere with Chrome's rendering. Use VNC or connect a physical display on Windows.

Platform Notes

macOS

Chrome on macOS uses GPU hardware acceleration for video encoding, providing the best capture performance. After installing Node.js, go to System Settings → Privacy & Security → App Management and allow Node.js. Use Screen Sharing or VNC for remote access to the PrismCast machine.

Windows

Install PrismCast as a service with prismcast service install. See Remote Access above for display capture requirements.

Linux / Docker

Docker containers support Intel GPU hardware acceleration when an Intel GPU with Quick Sync Video is available on the host. Pass the GPU device to the container (--device /dev/dri:/dev/dri) for significantly lower CPU usage. The container auto-detects the GPU and configures acceleration automatically. Without a GPU, the container falls back to software rendering. Access the browser via VNC for authentication — Docker containers expose noVNC at port 6080.

Troubleshooting

ProblemCauseSolution
"Browser Offline" or "Browser is not connected" An existing Chrome process is running. Quit all Chrome instances, then restart PrismCast.
"All tuners in use" despite no active streams Stale stream state. Restart PrismCast service.
Chrome won't open for login Running headless or as a service. Access the PrismCast machine via VNC or Screen Sharing to complete authentication.
macOS blocks Node.js after install App Management security gate. System Settings → Privacy & Security → App Management → Allow Node.js.
Port conflict (address in use) Another service using port 5589. Stop the conflicting service, or change the port in Configuration.
Slow first tune (~5–10 seconds) Guide-based services need to search their channel grid on the first tune. This is normal. Subsequent tunes of the same channel are faster due to caching. Enable channel precaching in Configuration for faster first tunes.
"Channel not found" or wrong channel plays The Channel Selector value does not match the service's guide entry. Check the log for available channel names. The expected format varies by service — some use display names, others use internal codes.
Channel worked before but now fails to tune TV provider session expired. Click Login on the channel to re-authenticate with your TV provider. Sessions expire periodically on the provider's end.
Cox Contour TV / Xfinity Stream tunes take 15–30 seconds The web player is inherently slow to initialize. This is a limitation of the web player, not PrismCast. Each tune requires a full page load of the player.

Known Limitations

Restart Required

Configuration saved. 0 active stream(s) will be interrupted if you restart now.

Waiting for streams to end...

What's new

Loading...
View on GitHub