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.
The community here is pretty good at providing those pointers for those that need it.