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

I actually have one of the higher DirecTV packages and I'm currently using it with ADB Tuner. If you need anything from me that can be helpful in terms of gathering data from an active DirecTV account, please let me know.

This is a great option to get some extra streams. So I would be happy to help!

If you are running in a docker container, check your environment variables

SCREEN_WIDTH=3840
SCREEN_HEIGHT=2160

pick a resolution higher than what you want it to capture. When using a container you don’t need an actual 4k monitor, the variables tell the container what resolution to render the chrome tab.

Running native in Windows When i fire it up on the TV is shows as 3840x2160 which is way above the wanted 1080p BUT maybe im not sure what else im missing etc BUT its working well since i moved off docker at least for me

1 Like

I can't explain the resolution issue that you're having. Is there more than just the TV connected as a display device? Any other remote connection software running on that machine? I assume you've already tried stopping PrismCast and restarted it with the 3840x2160 resolution remaining consistent?

1 Like

Recorded College Gameday today on ESPN. Was able to watch the whole thing with no real issues skipping or other issues, but did have issues with window size. MacOS Homebrew install 1.4.2 on 2018 Intel Macbook Pro Intel Core i7 in clamshell mode, with external HDMI TV attached in 1920x1080 resolution, PrismCast with default settings, 720p High at 60 fps.

Episode started filling the whole screen (screenshots taken on M2 Macbook Air with Channels iPad app installed). Stats on for reference (not sure why the scaled resolution changed, all shots were taken fromthe same session). Show fills the window/TV completely.

After a while it comes out of commercial and has black borders all around

Then a little later, again after a commercial, screen went black for a few second, now you can see the "Back" at the top and the show description at the bottom.

I'm sure this is PrismCast's way of recovery, which I really appreciate over not getting the recording, or perhaps it is an unknown issue that may be easy to fix? Either way, I hadn't seen this reported, so here it is.

If llogs or anything else to help debug are needed, just let me know.

Will there ever be a way to get MLB going with this?

The biggest addition in 1.5.0 is DirecTV Stream — PrismCast's sixth supported provider, joining Fox, HBO Max, Hulu, Sling TV, and YouTube TV. Thanks to @KineticMan for the collaboration on getting DirecTV Stream up and running.

Beyond that, this release focuses on making the channels tab more powerful and informative. You can now sort columns, show/hide optional columns, and your preferred sort order automatically determines how the M3U playlist is ordered for Channels DVR. Health indicators give you at-a-glance green/red dots showing each channel's last tune status, along with provider badges confirming your authentication is working.

Predefined channel coverage has been expanded across providers, with automatic Pacific timezone variant generation so West Coast users have more comprehensive guide data out of the box. New bulk actions make it easy to toggle predefined channels by scope — all, Pacific variants only, or East variants only.

For users who want to go beyond the built-in providers, the new provider profiles system lets you add support for any streaming site yourself — a step-by-step wizard walks you through it, with live CSS selector testing against the real site, and you can share your setup with others via exportable provider packs.

Finally, optional channel lineup precaching can fetch provider guide data in the background at startup so your first tune is faster. Thanks to @bnhf for the inspiration on playlist sort parameters and for the collaboration on expanding predefined channel coverage.

So...yeah...a bunch of stuff in this one as it turns out. :smile:

To reiterate from prior release notes:

If you’ve created user-defined channels that are now covered by predefined options, I recommend deleting those overrides and using the defaults. Predefined channels are what I test and maintain; overrides are entirely optional, but they do create long-term configuration debt for you as PrismCast evolves.

I really appreciate the feedback, enthusiasm, and passion around PrismCast. Almost every feature added since 1.0.0 has come from thoughtful, respectful discussion with this community.

My only ask is simple: please be kind, not demanding. PrismCast started as a project for my own needs, and I share it because I enjoy this community and wanted to give something back. Respectful feedback is always welcome; entitlement is not.

Thank you to everyone who’s shared encouragement or joy in using PrismCast—it genuinely keeps this project fun to work on.

One more note for everyone’s benefit: please don’t repost the same questions in this thread. Many of them have already been asked and answered, and the forum’s topic-only search works well. Keeping discussions focused helps everyone. Please treat the thread and each other with the same consideration you’d expect in return.

1.5.0 (2026-02-28)

  • New feature: DirecTV Stream provider support. Thanks to @kineticmac for the collaboration.
  • New feature: sortable columns and optional columns on the channels tab — click any column header to sort, and use the column picker to show or hide Number, Station ID, Profile, and Selector columns. Preferences persist across sessions. Note: your preferred sort will determine how the playlist is ordered for Channels DVR by default.
  • New feature: channel health and provider login indicators on the channels tab — green/red dots show last tune status per channel, and provider badges indicate verified authentication.
  • New feature: channel lineup precaching at startup — provider guide data can be optionally fetched in the background so channel discovery is instant on first tune. Precaching only helps speed up the first tune of a channel on a given provider.
  • New feature: bulk actions dropdown on the channels tab for toggling predefined channels by scope — all, Pacific variants only, or East variants only.
  • New feature: user-defined provider profiles — add support for any streaming site without waiting for a built-in update. A step-by-step builder wizard guides you through profile creation, live CSS selector testing verifies your configuration against the real site, and shareable provider packs let you export and import complete provider setups.
  • Improvement: the playlist endpoint now accepts optional ?sort= and ?direction= query parameters to override the saved sort order per request without changing the saved preference. Thanks to @bnhf for the inspiration.
  • Improvement: expanded predefined channel coverage across providers, with automatic Pacific timezone variant generation. Thanks to @bnhf for the collaboration.
  • Improvement: detect and fix stale service paths after upgrades — service start and service restart auto-regenerate the service file when paths change, and service status warns about mismatches.
  • Improvement: profile-level scroll options for sites like Disney+ that lazy-load page content.
  • Improvement: webUI performance refinements.
  • Improvement: channel selector autocomplete now suggests all available channels from provider discovery, with fuzzy URL matching and "Did you mean?" hints for common domain variants.
  • Housekeeping: provider optimizations and refinements.
  • Housekeeping.
3 Likes

I'd appreciate it if you could test out v1.5.0 that I just released and see how it works for you. I had to take educated guesses on the DirecTV Stream channel names...if you could verify a few of them, that would be great! Try a few of your favorites (CNN, ESPN, etc.)...and also if you could specifically test: Bloomberg, Fox Business, Fox News, Fox Sports 1, Fox Sports 2, FX Movies, and USA...those names seem to vary between providers and I took a guess at them for DirecTV Stream.

What's your provider of choice for ESPN with PrismCast? In short...stuff like this should self-heal within PrismCast, when possible...but it's not perfect, as you can see. See if v1.5.0 which I just released works better...but I'd love to understand which provider you're using. to see if I can recreate these myself.

Thanks!

v1.5.0 gives you the option to expose channel numbers as additional columns in the channels view...and sort by it if you'd like. Whatever sort you choose for the channels tab will automatically be applied to the playlist that's sent to Channels DVR.

I'm unlikely to enable direct editing in the channels tab...it's not a pattern I tend to like or favor. If you want to bulk-edit, there's always the JSON export/import method which allows you to do that. I'm open to understanding more about the use case...give v1.5.0 a try and see.

I'm looging into espn.com with my ESPN Unlimited account. I'm getting unlimited as part of my Spectrum account, but not logging in with Spectrum TV Provider access, if that makes sense.

Separate question, I didn't see it in the notes, does 1.5.0 fix the homebrew upgrade service issue?

@scottuf It does - from the release notes post above:

  • Improvement: detect and fix stale service paths after upgrades — service start and service restart auto-regenerate the service file when paths change, and service status warns about mismatches.

Thanks for the information...let me know how v1.5.0 works out.

2 Likes

Sorry, missed that. It's currently recording the Gators beating up on the hogs on ESPN, so I'll check the recording and upgrade in the morning (watching the game on the app just in case ther were issues).

Thanks for sharing this great little app.

Thanks for sharing this great little app.

You're welcome! Enjoy.

1 Like

In v1.5.0 you'll find rich support for Pacific/West coast station guides for channels, as well as bulk operations to quickly enable/disable east or west coast variants of channels.

Enjoy!

1 Like

Thanks!
I see there are some additional YTTV channels that I haven't added yet.
Will be helpful for getting the station ID for them.
Appears I have a mix of East and West feeds.

Not to repeat myself too much, but I would continue to encourage you to use PrismCast's predefined channels if you want to keep up with its future evolution with a minimum of fuss.

I'm all for using the predefined ones, but I'll have to look at each channel I added or over-rode (before this new version came out) to see if a predefined one now exists that can replace it (same provider, selector and station ID).

Still haven't seen a reply to this question. Is there something else I should try besides using deeplinks to get both these networks?

I've seen a few folks continuing to raise questions and discuss performance-related topics, so I thought I'd take a moment to address a couple of recurring themes.

PrismCast performance

Performance is not an issue for PrismCast itself. The app has very modest resource needs...that's not where the challenge lies in most environments.

Chrome performance

PrismCast cannot do what it does without a working installation of Chrome. And Chrome has a well-earned reputation for being both very fast and a resource hog. It just is.

PrismCast compounds this. PrismCast is recording a screen capture generated by Chrome, and that screen capture is transcoded by Chrome — PrismCast doesn't do any video transcoding on its own. When you combine Chrome's baseline resource requirements with its display engine and the transcoding it performs on PrismCast's behalf, you can quickly see why lower-end hardware struggles.

A major factor in all of this is whether Chrome has access to GPU hardware acceleration. Here's how that breaks down by platform:

  • macOS GPU acceleration works out of the box. On Apple Silicon especially, Chrome takes full advantage of the integrated GPU, which is why I can (and have) run more than 8 simultaneous streams for hours at a time with the CPU barely breaking a sweat.

  • Windows GPU acceleration may work with headed Chrome on Windows, but I haven't verified this personally. If you're running PrismCast natively on Windows, check chrome://gpu to see what your situation looks like.

  • Linux (bare metal) * GPU acceleration is effectively unavailable in most real-world setups. There are a handful of documented cases of people getting it working, but those efforts required very specific hardware, manually installed drivers, particular kernel versions, specific Chrome launch flags, and a lot of trial and error. The community consensus is that this remains fragile and unreliable. Don't count on GPU acceleration on Linux.

  • Linux in Docker This is where most people hit a wall. Docker containers don't have GPU access, full stop. Chrome is doing all of its rendering and transcoding entirely on the CPU. That's the single biggest reason Docker-based deployments can feel slow and will require modern hardware capabilities, especially if you're trying to drive multiple streams at once.

For platforms without GPU acceleration, your performance is going to be gated primarily by how much CPU you can throw at it, and secondarily by available memory.

Check your own GPU status

If you want to know whether your instance of Chrome is hardware accelerated, you can check for yourself. Open a new tab in the Chrome browser that PrismCast launches and navigate to chrome://gpu. That page will tell you exactly which graphics features are hardware accelerated and which are falling back to software. If you're seeing "Software only" across the board, that's your bottleneck.

A note for Docker users

Beyond the GPU situation, if you're running PrismCast in Docker and seeing worse performance than you'd expect, check your container's resource allocations. Docker applies default CPU and memory limits that can be quite conservative, and Chrome will bump up against those ceilings fast. Make sure you're giving your container enough room to breathe - especially on the CPU side. You may be throttling Chrome before it even gets a chance to do its work.

"Why does PrismCast need Chrome at all?"

This has come up a couple of times...Chrome isn't just a convenience, it's a hard dependency. PrismCast needs a full browser engine to render content, and it relies on Chrome's built-in media APIs to capture and transcode that rendered output into a stream. On top of that, PrismCast drives Chrome programmatically through the Chrome DevTools Protocol, which gives it precise control over the browser's behavior. There simply isn't a lighter-weight alternative that provides the same combination of rendering fidelity, media pipeline, and programmable control. If there were, believe me, I'd be using it.

A note on bitrate

This comes up frequently enough that it's worth addressing here. When PrismCast configures a target bitrate, say, 6Mbps, that value is passed to Chrome for it's screen capture. **That value is a target, not a ceiling.**Chrome uses variable bitrate (VBR) encoding, and the spec explicitly treats the bitrate you pass in as a hint, not a hard limit. Chrome is free to exceed it, and it will.

In practice, Chrome internally sets a peak bitrate at roughly 2x the target, and the software encoder path allows an additional 25% overshoot on top of that. Scene complexity, keyframes, and other encoding factors can push the actual bitrate well above what you asked for, sometimes significantly. If you set a 6Mbps target, don't be surprised to see spikes of 10–12Mbps or more during complex scenes. This is normal VBR behavior and is not something PrismCast can override. Chrome's encoder makes the final call.

If you're planning around bandwidth constraints, build in headroom above your configured target. A good rule of thumb is to assume your peak bitrate could be 2–3x your target in worst-case scenarios.

The "easy button"

If you're looking for a highly performant setup without the headaches of GPU driver configuration, Docker resource tuning, or Linux-specific troubleshooting, the honest answer is to get a Mac. A Mac mini with an M-series chip will handle PrismCast with ease, GPU acceleration works out of the box, and they can be had at very affordable price points. It's the closest thing to a plug-and-play experience for running PrismCast, and it's what I'd recommend to anyone who just wants it to work well without fuss. Folks like @bnhf are also amazing resources for those in the Docker world, and you can definitely get good performance out of a Docker setup, with the right hardware. A NAS with a multi-generation old CPU is going to struggle.


None of this is meant to discourage anyone - just to help set realistic expectations so you can plan your hardware accordingly. I also want to emphasize that I provide no support of any kind for any of the above - this is way out of the scope of what you get from me. :smile: The community here is pretty good at providing those pointers for those that need it.

5 Likes

I just checed the ESPN recording from last night and it doesn't look like there were any hiccups. Still if you need any logs or anything from yesterday morning's recording, I can share.