Introducing PrismCast: Browser-based Live TV Capture for Channels DVR and Plex

So this just started for me this AM in Windows 10 after doing an upgrade cycle and reboot (Channels, Docker Desktop, Windows).

[2026/05/19 11:07:26.734 AM] Using FFmpeg at: C:\ProgramData\channelsdvr\latest\ffmpeg.exe.
[2026/05/19 11:07:26.763 AM] Loaded 1194 channels (24 user, 1170 predefined).
[2026/05/19 11:07:26.764 AM] Loaded health state for 13 channels and 12 domains.
[2026/05/19 11:07:30.220 AM] Chrome ready: Chrome/148.0.7778.168 (GPU: AMD Radeon(TM) Graphics (0x00001636) Direct3D11 vs_5_0 ps_5_0 [AV1, H264, HEVC]).
[2026/05/19 11:07:35.236 AM] Starting channel lineup precaching for 2 services.
[2026/05/19 11:07:40.956 AM] Precached Cox Contour TV: 223 channels (5.7s).
[2026/05/19 11:07:47.255 AM] Precached Fox: 14 channels (6.1s).
[2026/05/19 11:07:47.403 AM] Channel lineup precaching complete: 2 services cached in 12.2s.
[2026/05/19 11:07:50.706 AM] e[33m[WARN] Capture probe attempt 1 of 3 failed: Capture probe timed out. Retrying in 5s.e[39m
[2026/05/19 11:08:00.780 AM] e[33m[WARN] Capture probe attempt 2 of 3 failed: Capture probe timed out. Retrying in 5s.e[39m
[2026/05/19 11:08:10.835 AM] e[31m[ERROR] Capture system verification failed during startup: Capture system verification failed after 3 attempts: Capture probe timed out.e[39m
[2026/05/19 11:08:10.835 AM] e[31m[ERROR] Fatal startup error occurred: Capture system verification failed after 3 attempts: Capture probe timed out.e[39m

Everything suggested in this thread (minus turning off Hyper-V because I'm using that for WSL and Docker) I tried, but to no avail. Did anything else come up for you that might help?

No, sorry. The only change I had made before it bombed with this error was to add hyper-V to Windows because I wanted to mess around with a home automation VM. Once I disabled that it started working again.

Id just give up using this on windows with anything but native.

WSL is a mess and a half to deal with so if you can go native on anything, then do so.

I, too, am seeing this "Bundled FFmpeg is not available" warning on my homebrew-installed PrismCast on my Mac, and I'd love to fix it. Similarly, I also have ffmpeg installed and up-to-date via homebrew. I'm thinking it's a path issue in the PrismCast setup.

@hjd is there a way to specify the path to ffmpeg in the prismcast settings somewhere?

[2026/05/22 10:14:41.996 AM] Starting PrismCast v1.10.3 with configuration:
[2026/05/22 10:14:41.997 AM]   Configuration file: /Users/davethenerd/.prismcast/config.json
[2026/05/22 10:14:41.997 AM]   Chrome profile: /Users/davethenerd/.prismcast/chromedata
[2026/05/22 10:14:41.997 AM]   Server port: 5589
[2026/05/22 10:14:41.997 AM]   Quality preset: 1080p-high (1920×1080)
[2026/05/22 10:14:41.997 AM]   Capture codecs: h264, hevc
[2026/05/22 10:14:41.997 AM]   Video bitrate: 20000000
[2026/05/22 10:14:41.997 AM]   Max retries: 4
[2026/05/22 10:14:41.997 AM]   Max concurrent streams: 5
[2026/05/22 10:14:41.997 AM]   Circuit breaker threshold: 10 failures in 5 minutes
[2026/05/22 10:14:41.997 AM]   Chrome executable: autodetect
[2026/05/22 10:14:41.997 AM]   HLS segment duration: 2s, max segments: 10
[2026/05/22 10:14:41.997 AM]   HDHomeRun emulation: enabled (port 5004)
[2026/05/22 10:14:42.026 AM] Using FFmpeg at: ffmpeg.
[2026/05/22 10:14:42.040 AM] Loaded 1170 channels.
[2026/05/22 10:14:42.040 AM] Loaded health state for 14 channels and 6 domains.
[2026/05/22 10:14:43.326 AM] Chrome ready: Chrome/148.0.7778.179 (GPU: AMD Radeon Pro 580X [AV1, H264, HEVC]).
[2026/05/22 10:14:43.327 AM] [WARN] Bundled FFmpeg is not available. Preroll generation skipped - startup playlists will have no segments.
[2026/05/22 10:14:44.143 AM] Capture system verified successfully.
[2026/05/22 10:14:45.873 AM] CDP proxy listening at /cdp.
[2026/05/22 10:14:45.874 AM] PrismCast is now listening on 0.0.0.0:5589.
[2026/05/22 10:14:45.874 AM] HDHomeRun emulation is now listening on 0.0.0.0:5004 (DeviceID: 00B79008).
[2026/05/22 10:14:48.327 AM] Starting channel lineup precaching for 2 services.
[2026/05/22 10:14:52.577 AM] Precached DirecTV Stream: 363 channels (4.3s).
[2026/05/22 10:14:54.400 AM] Channel lineup precaching complete: 1 service cached, 1 skipped (filtered) in 6.1s.

Thanks!

I have a (temporary) workaround/solution for the "Bundled FFmpeg is not available" issue. It seems PrismCast is looking for a very specific ffpmeg in a very specific place and the installer (via homebrew, at least) fails to deliver it. So here's what I did:

user@favorite-mac ~/L/A/C/latest> cd /usr/local/opt/prismcast/libexec/lib/node_modules/prismcast/node_modules/ffmpeg-for-homebridge
node install.js
Retrieving FFmpeg from ffmpeg-for-homebridge release: vundefined.
Downloading FFmpeg from: https://github.com/homebridge/ffmpeg-for-homebridge/releases/download/vundefined/ffmpeg-darwin-x86_64.tar.gz
Download failed on attempt 1. Retrying...
Download failed on attempt 2. Retrying...

The Homebridge plugin has been installed, however you may need to install FFmpeg separately.

user@favorite-mac /u/l/o/p/l/l/n/p/n/ffmpeg-for-homebridge> cat package.json | grep '"version"'
  "version": "2.2.2",
user@favorite-mac /u/l/o/p/l/l/n/p/n/ffmpeg-for-homebridge> curl -L "https://github.com/homebridge/ffmpeg-for-homebridge/releases/download/v2.2.2/ffmpeg-darwin-x86_64.tar.gz" | tar xzf -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 27.4M  100 27.4M    0     0  48.0M      0 --:--:-- --:--:-- --:--:--  111M
user@favorite-mac /u/l/o/p/l/l/n/p/n/ffmpeg-for-homebridge> mv usr/local/bin/ffmpeg ./ffmpeg
user@favorite-mac /u/l/o/p/l/l/n/p/n/ffmpeg-for-homebridge> ./ffmpeg -version
ffmpeg version 8.0-homebridge-darwin-x86_64 Copyright (c) 2000-2025 the FFmpeg developers
[etc]

After that, I restarted PrismCast, and the error is gone:

[2026/05/22 10:53:03.663 AM] Starting PrismCast v1.10.3 with configuration:
[2026/05/22 10:53:03.663 AM]   Configuration file: /Users/shortUserName/.prismcast/config.json
[2026/05/22 10:53:03.663 AM]   Chrome profile: /Users/shortUserName/.prismcast/chromedata
[2026/05/22 10:53:03.663 AM]   Server port: 5589
[2026/05/22 10:53:03.663 AM]   Quality preset: 1080p-high (1920×1080)
[2026/05/22 10:53:03.663 AM]   Capture codecs: h264, hevc
[2026/05/22 10:53:03.663 AM]   Video bitrate: 20000000
[2026/05/22 10:53:03.663 AM]   Max retries: 4
[2026/05/22 10:53:03.663 AM]   Max concurrent streams: 5
[2026/05/22 10:53:03.663 AM]   Circuit breaker threshold: 10 failures in 5 minutes
[2026/05/22 10:53:03.663 AM]   Chrome executable: autodetect
[2026/05/22 10:53:03.663 AM]   HLS segment duration: 2s, max segments: 10
[2026/05/22 10:53:03.663 AM]   HDHomeRun emulation: enabled (port 5004)
[2026/05/22 10:53:03.688 AM] Using FFmpeg at: /usr/local/Cellar/prismcast/1.10.3/libexec/lib/node_modules/prismcast/node_modules/ffmpeg-for-homebridge/ffmpeg.
[2026/05/22 10:53:03.702 AM] Loaded 1170 channels.
[2026/05/22 10:53:03.702 AM] Loaded health state for 14 channels and 6 domains.
[2026/05/22 10:53:04.824 AM] Chrome ready: Chrome/148.0.7778.179 (GPU: AMD Radeon Pro 580X [AV1, H264, HEVC]).
[2026/05/22 10:53:09.824 AM] Starting channel lineup precaching for 2 services.
[2026/05/22 10:53:14.407 AM] Precached DirecTV Stream: 363 channels (4.6s).
[2026/05/22 10:53:16.338 AM] Channel lineup precaching complete: 1 service cached, 1 skipped (filtered) in 6.5s.
[2026/05/22 10:53:21.532 AM] Capture system verified successfully.
[2026/05/22 10:53:21.784 AM] CDP proxy listening at /cdp.
[2026/05/22 10:53:21.785 AM] PrismCast is now listening on 0.0.0.0:5589.
[2026/05/22 10:53:21.785 AM] HDHomeRun emulation is now listening on 0.0.0.0:5004 (DeviceID: 00B79008).

I'm (nearly) certain this solution will be rendered useless on the next PrismCast update, so hoping this can be baked into the installer somewhere down the line.

(edit: I'm also not sure if this is "best practice" or not, since it's no longer using the homebrew installed ffmpeg, but using its own, slightly older, ffmpeg. I've tested and it seems fine, but YMMV)

I installed PrismCast using brew on the same M4 Mac Mini as my Channels DVR server. I setup PrismCast as a source in CDVR and was able to watch a channel by selecting it from the Channels LiveTV guide. One thing that happened is the first time I tried watch now it failed stating it couldn't load the media but worked fine the next time I did watch now.

When CDVR tried to record a scheduled program on the same PrismCast channel it failed and rescheduled the recording. I looked at the CDVR log and it reported the PrismCast channel stream timed out. I looked at the PrismCast log and saw the following errors:

[2026/05/22 06:26:49.756 AM] [ERROR] [cartoon-n2sb31] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:26:49.775 AM] [cartoon-n2sb31] Stream ended after 20s (setup failed).
[2026/05/22 06:26:49.776 AM] [WARN] Pretune attempt 1/5 failed for Cartoon Network: Stream error.
[2026/05/22 06:27:09.969 AM] [ERROR] [cartoon-qmahgv] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:27:09.987 AM] [cartoon-qmahgv] Stream ended after 15s (setup failed).
[2026/05/22 06:27:09.987 AM] [WARN] Pretune attempt 2/5 failed for Cartoon Network: Stream error.
[2026/05/22 06:27:29.828 AM] [ERROR] [cartoon-64kzx2] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:27:29.846 AM] [cartoon-64kzx2] Stream ended after 15s (setup failed).
[2026/05/22 06:27:46.476 AM] [ERROR] [cartoon-r8h801] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:27:46.494 AM] [cartoon-r8h801] Stream ended after 15s (setup failed).
[2026/05/22 06:28:02.226 AM] [ERROR] [cartoon-8k4de7] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:28:02.244 AM] [cartoon-8k4de7] Stream ended after 13s (setup failed).
[2026/05/22 06:28:02.248 AM] GET /hls/cartoon/stream.m3u8 from 127.0.0.1 responded 500 in 13006.510 ms.
[2026/05/22 06:28:23.282 AM] [ERROR] [cartoon-biz013] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:28:23.301 AM] [cartoon-biz013] Stream ended after 13s (setup failed).
[2026/05/22 06:28:23.304 AM] GET /hls/cartoon/stream.m3u8 from 127.0.0.1 responded 500 in 13024.000 ms.
[2026/05/22 06:28:52.347 AM] [ERROR] [cartoon-qahp24] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:28:52.364 AM] [cartoon-qahp24] Stream ended after 13s (setup failed).
[2026/05/22 06:28:52.368 AM] GET /hls/cartoon/stream.m3u8 from 127.0.0.1 responded 500 in 13032.331 ms.
[2026/05/22 06:29:39.399 AM] [ERROR] [cartoon-1wmbtj] Stream setup failed for https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z: Waiting for selector video failed.
[2026/05/22 06:29:39.418 AM] [cartoon-1wmbtj] Stream ended after 15s (setup failed).`

What could be causing this issue and are there any PrismCast configuration settings I can adjust to fix the CDVR and PrismCast errors?

Thanks

My questions are;

  1. what does the warning message mean
  2. what are "Preroll generation" and "startup playlists" (why do I want those?)
1 Like

Already am and have been on npm native for months with no issues.

No idea what happened during this update cycle that ruined things for me.

FYI, I can literally get PrismCast to launch successfully by disabling the verifyCaptureSystem() function in the setup.js, but I can't play anything if I do so. Interestingly, there is no problem launching webpages with the verify function, and the preaching works normally (webpages launch, do their thing, and then close). It's only when launching a station for capture that I just get a blank tab. I believe it might be puppeteer-stream related, but have not been able to narrow it down further than that.


EDIT: I actually think this might have been Hyper-V or something in that realm related in the end. I manually hard stopped everything on my server, shut down for a while to clear RAM and whatnot, and then started back up. After that sequence, everything just works once more! I was seeing some other stuff that makes me lean this way, too, like WSL crashing and Docker Desktop restarting, things being slow and iffy, some connections not working, etc.... So in the end, no idea why it happened, but things are cleared up, thus no action necessary. In other words, "Did you try unplugging it and plugging it back in?" :stuck_out_tongue_closed_eyes:

I see a way to set the Channels DVR port, but is there a way I can set the host, too?

I have Channels running on a different machine, and I'd love to take advantage of the pre-caching benefits.

I found a workaround for the issue I was having with PrismCast not successfully pulling from Channels: Tailscale.

I'm running PrismCast on a Mac running macOS 15 (though macOS 26 would still have this issue). PrismCast (via node) is not permitted to contact devices on the Local Network, and there's no way to grant that permission because the request never appears in the macOS GUI.

The workaround was to have Tailscale configured and running on both machines, then add the Tailscale IP of the Channels DVR to PrismCast's config.json, as follows:

  "channelsDvr": {
    "host": "x.x.x.x"
  },

Restart PrismCast and it should pick things up from there.

HBO was working until v1.10.3. I signed out and reauthenticated without luck. It shows the browser page as signed in but it will not select the channel. I can view all by selecting the item manually. Here's the log info:

[2026/05/27 08:28:09.645 AM] [ERROR] [hbo-jq1meb] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:28:09.650 AM] [hbo-jq1meb] Stream ended after 11s (setup failed).
[2026/05/27 08:28:09.651 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:28:21.658 AM] [ERROR] [hbo-kkrq24] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:28:21.663 AM] [hbo-kkrq24] Stream ended after 11s (setup failed).
[2026/05/27 08:28:21.663 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:28:33.656 AM] [ERROR] [hbo-td8j9l] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:28:33.661 AM] [hbo-td8j9l] Stream ended after 11s (setup failed).
[2026/05/27 08:28:33.661 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:28:45.789 AM] [ERROR] [hbo-si627y] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:28:45.795 AM] [hbo-si627y] Stream ended after 11s (setup failed).
[2026/05/27 08:28:45.795 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:28:57.752 AM] [ERROR] [hbo-0bwhch] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:28:57.758 AM] [hbo-0bwhch] Stream ended after 11s (setup failed).
[2026/05/27 08:28:57.758 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:29:09.698 AM] [ERROR] [hbo-3wffba] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:29:09.704 AM] [hbo-3wffba] Stream ended after 11s (setup failed).
[2026/05/27 08:29:09.704 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:29:21.703 AM] [ERROR] [hbo-qsxd1b] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:29:21.708 AM] [hbo-qsxd1b] Stream ended after 11s (setup failed).
[2026/05/27 08:29:21.708 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:29:33.705 AM] [ERROR] [hbo-12h9yq] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:29:33.710 AM] [hbo-12h9yq] Stream ended after 11s (setup failed).
[2026/05/27 08:29:33.710 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:29:45.705 AM] [ERROR] [hbo-24q4z9] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:29:45.710 AM] [hbo-24q4z9] Stream ended after 11s (setup failed).
[2026/05/27 08:29:45.710 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:29:57.711 AM] [ERROR] [hbo-nda6g2] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:29:57.715 AM] [hbo-nda6g2] Stream ended after 11s (setup failed).
[2026/05/27 08:29:57.715 AM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 08:30:09.725 AM] [ERROR] [hbo-wc9u4w] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 08:30:09.730 AM] [hbo-wc9u4w] Stream ended after 11s (setup failed).

Same HBO issue on version 1.10.2


[2026/05/27 07:00:51.466 PM] Login mode started for https://play.hbomax.com.
[2026/05/27 07:02:18.155 PM] Login tab was closed. Ending login mode.
[2026/05/27 07:02:18.261 PM] Login mode ended.
[2026/05/27 07:04:18.835 PM] [ERROR] [hbo-5tqmov] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 07:04:18.835 PM] [hbo-5tqmov] Stream ended after 11s (setup failed).
[2026/05/27 07:04:18.835 PM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 07:04:30.835 PM] [ERROR] [hbo-suh1b4] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.
[2026/05/27 07:04:30.836 PM] [hbo-suh1b4] Stream ended after 11s (setup failed).
[2026/05/27 07:04:30.836 PM] [WARN] Stream setup failed for hbo: Failed to start stream.
[2026/05/27 07:04:42.841 PM] [ERROR] [hbo-8sfnda] Stream setup failed for https://play.hbomax.com: Channel selection failed: HBO channel rail not found on /channels. HBO Max may have restructured the page, or the subscription may not be active.

@DaveTheNerd you can find local network access under Privacy and Security > Local Network Access. There you can enable node's network access.

That's where the setting is, but there's no way to enable network access for node there. It doesn't show up asking for permission, and there's no plus(+) sign to add it manually.

Trying to get PrismCast to support higher resolution other than 1920x939. The server I am running is Debian 13 with no graphical interface installed. Below is the screenshot of the warning stating it will default to 720p. Using docker as well.

I tried to add environment height and width but didn't seem to make a difference. Just keeps defaulting to 1920x939

You need to choose a resolution higher than what you want to use. For example if you want 1920x1080, your env variables need to be 2560 × 1440

OK, so I moved PrismCast to a Mac Mini. I installed it natively with Homebrew, not in Docker.

And the docs say:

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.

But I still can't get higher than 720p.

Am I missing something here?

What resolution do you have your "Display" set to when you VNC/Screen Share into your Mac mini? I know that Chrome needs to be able to launch a window that's large enough to capture your desired resolution. The "Your display cannot support this resolution" seems to indicate that at least PrismCast doesn't think your (virtual) display size is of a high enough pixel count.

I also found PrismCast's http://x.x.x.x:5589/debug endpoint to be helpful when troubleshooting things (full disclosure: I just cloned the repo and pointed Claude Code at it to help me troubleshoot the previously-mentioned local network access issue, and through that it surfaced the /debug interface :wink:).

I don't know. I'm just using the built in screen sharing. I don't keep it open anyways. is that something you have to do?

Yes I totally understand that. But I can't figure out how to get it to do that. I also have an HDMI dummy plugged in to mimic a monitor. But I can't figure out on Debian 13 or if its Prismcast that doesn't want to see a higher resolution.