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

I'm assuming you're addressing these issues

  1. I can confirm the Reset All to Defaults is now working correctly in Firefox.

  2. I'm repeating my previous test, by recording a 30 minute show on CBS using three CDVR servers with three different sources: 1) PrismCast using tv.yttv as a source, 2) YTTV TVE and 3) HDHR Prime tuner. They're currently recording.

It appears the stream from Prismcast is missing the Program Clock Reference saw_pcr=false

2026/03/16 14:30:15.762446 [MTS] Statistics for "TV/Hot Bench/Hot Bench S12E121 Discount to Disaster 2026-03-16-1400.mpg": discontinuity_detected=0 transport_errors=0 saw_pcr=false saw_pmt=true highest_pts=1819.274333

Same show recorded via YTTV TVE saw_pcr=true

2026/03/16 14:30:35.836195 [MTS] Statistics for "TV/Hot Bench/Hot Bench S12E121 Discount to Disaster 2026-03-16-1400.mpg": discontinuity_detected=0 transport_errors=0 saw_pcr=true saw_pmt=true highest_pts=1856.119022

Took 1:20:34 to comskip the PrismCast recording and the comskip log shows errors

WARNING: Actual framerate (59.971) different from specified framerate ( 1.000)
Internal frame numbers will be different from .txt frame numbers
WARNING: Complex timeline or errors in the recording!!!!
Results may be wrong, .ref input will be misaligned. .txt editing will produce wrong results

VLC thinks the framerate is 29.97 fps
VLC
My Video editor thinks it's VFR (Variable Frame Rate) at 59.99 fps average
VRD

MediaInfo doesn't display a frame rate
General
ID                                : 0 (0x0)
Complete name                     : Hot Bench S12E121 Discount to Disaster 2026-03-16-1400.mpg
Format                            : MPEG-TS
File size                         : 1.81 GiB
Duration                          : 30 min 19 s
Overall bit rate mode             : Variable
Overall bit rate                  : 8 537 kb/s
FileExtension_Invalid             : ts m2t m2s m4t m4s tmf ts tp trp ty
Conformance warnings              : Yes
 General compliance               : File name extension is not expected for this file format (actual mpg, expected ts m2t m2s m4t m4s tmf ts tp trp ty)

Video
ID                                : 256 (0x100)
Menu ID                           : 1 (0x1)
Format                            : AVC
Format/Info                       : Advanced Video Codec
Format profile                    : Baseline@L4
Format settings                   : 1 Ref Frames
Format settings, CABAC            : No
Format settings, Reference frames : 1 frame
Format settings, GOP              : M=1, N=101
Codec ID                          : 27
Duration                          : 30 min 19 s
Width                             : 1 920 pixels
Height                            : 1 080 pixels
Display aspect ratio              : 16:9
Color space                       : YUV
Chroma subsampling                : 4:2:0
Bit depth                         : 8 bits
Scan type                         : Progressive
Color range                       : Limited
Color primaries                   : BT.709
Transfer characteristics          : BT.709
Matrix coefficients               : BT.709

Audio
ID                                : 258 (0x102)
Menu ID                           : 1 (0x1)
Format                            : AAC LC
Format/Info                       : Advanced Audio Codec Low Complexity
Format version                    : Version 4
Muxing mode                       : ADTS
Codec ID                          : 2 / 15-2
Duration                          : 30 min 19 s
Bit rate mode                     : Variable
Channel(s)                        : 2 channels
Channel layout                    : L R
Sampling rate                     : 48.0 kHz
Frame rate                        : 46.875 FPS (1024 SPF)
Compression mode                  : Lossy
Delay relative to video           : 12 ms

Windows 11 doesn't display a frame rate
Windows

Channels DVR doesn't display a frame rate

Downloaded the recording to my iPhone, turned Airplane mode on and am playing it.
It's dropping output frames and A-V and FPS are changing as it plays.

After the upgrade on Windows via Node/npm, is anyone able to force 60 frames per second in the video? No matter what I do, I'm still only getting 30.000 fps.

Still throwing an error when I attempt to install the service.

What is that error?

If the source that PrismCast streams from is 30 fps, you get 30 fps.

Known Limitations

  • Frame rate follows the source. If the streaming site delivers 30fps, capture will be 30fps regardless of the configured frame rate setting.

Never seen anything higher than 30 with 1080p. But the pic is still pretty good with no real hiccups that I've seen.

I see 1920x1080 at 59.94. This is a native HLS stream. Running NPM

Just FYI.

Yes, thank you. PrismCast is capturing at 720p and when I check the Youtube capture window it is 720p60.

Thanks, Jim. What hardware are you running on? Is Chrome using hardware acceleration (Quicksync)?

I'll check it next time I restart that system. Just to confirm, with PrismCast already installed and running on this machine, do I just run the service installer per the github instructions when PrismCast isn't already running?

Running it on a cheap BeeLink PC on Win 11. It is not Intel so not getting GPU benefits.

1 Like

I appreciate the side-by-side comparison approach. Let me walk through what you're seeing:

The short version: You're comparing three fundamentally different signal paths - screen capture (PrismCast via YTTV), a native TVE stream, and a broadcast tuner. They use different container formats, different encoding pipelines, and different delivery mechanisms. The differences you found are inherent to those different paths, not bugs.

PCR and frame rate differences: When PrismCast uses screen capture (e.g. YTTV), Chrome's encoder produces the video. Chrome doesn't guarantee fixed frame timing, which is why you're seeing variable frame rate detection and why I presume comskip struggles with it. The PCR difference is simply a container format difference between screen capture output and native streams. None of this is something PrismCast can change - it's how Chrome's capture pipeline works.

For providers that deliver non-DRM streams, PrismCast's native HLS mode bypasses screen capture entirely and delivers the provider's original stream with proper fixed frame rates. The best way to get CBS is going to be through CBS.com, if it's available to you, since PrismCast can pull it via native streaming.

The comskip issue: Out of scope for any support I provide...so you're on your own here.

Bottom line: Screen capture will always look different from a native stream or a broadcast tuner in a metadata comparison. That's expected. The question that matters is: does the video look good when you watch it? If the answer is yes, the metadata differences are academic.

1 Like

What's your source and provider? In other words is it CBS on YTTV, etc.

I can't recall a channel that I got 60 FPS at 1080p on, but I'm sure it's possible If you have the right source and provider.

1 Like

Thanks. I'm already getting all my available TVE streams from Channels DVR TVE.
I was just using CBS as an example because I can get it three different ways.

Thanks for acknowledging that. I'll move on.

I wasn't reporting a comskip issue. I was just pointing out that its use of ffmpeg in reading every frame was showing timestamp and framerate variations in the TS stream.

Fox One …. YTTV is the provider.

This is a fantastic project - thank you for all of your work on this. I was able to get my Hulu Live channels working perfectly, but I also subscribe to FanDuel on Fubo and have had trouble getting it to work setting up a custom Provider. I trialed and errored with different settings for hours, with no luck. Has anyone had any success setting up channels with Fubo?

1 Like

In that case it's Yttv that's delivering 1080p at 60, Fox is natively 720p at 60.

For all the channels that I've seen upscaled in Chrome, I never get more than 30 FPS. And when I've streamed NBC, golf channel, etc which are natively 1080 they're also 30.

Windows 10 Enterprise LTSC 2019

if you copy it into AI, it will correct it. It has a / thing if I remember correctly. I just dropped it into Chat...

1 Like

Streaming Fox (foxLive, native HLS). Tuned in 3.4s (direct). It shows 720 at 59.94
OTA is 720 at 59.94
Fox Business (foxLive, native HLS). Tuned in 5.5s.it shows 1080 at 59.94
Fox News Streaming Fox (foxLive, native HLS). Tuned in 3.4s (direct) 1080 at 59.94

I assume the Fox One feeds are directly from their encoders at their native resolution.

I had to make a configuration change for CBS:

Navigation Timeout —30 seconds

Timeout for page navigation. Increase for slow networks or heavy pages.
Default: 10 seconds

It was taking 20+ seconds to compete setup. Was hoping it was HLS…but no.

Thanks for great code!