// the find
stupside/castor
Point it at any web page and it finds the video, extracts the stream, transcodes it and casts in real time to your TV. It even burns subtitles….
Castor is a terminal tool that extracts video streams from web pages via headless Chrome and CDP, transcodes with ffmpeg, and casts to DLNA or Chromecast devices. It also does local whisper.cpp subtitle transcription and burns them in. Aimed at developers comfortable in a terminal who want to cast arbitrary web video to their TV at full quality.
The CDP-based stream extraction is the clever part — instead of scraping or screen-capturing, it watches actual network traffic to find the real stream URL, which gives you the raw HLS/DASH manifest rather than a re-encoded screen. The ffmpeg integration is thoughtful: it probes the source with ffprobe, stream-copies when the TV already accepts the codec, and only transcodes when necessary. Shipping whisper.cpp as a git submodule with a bundled cgo binding and auto-downloaded model means subtitles work without any external service. The config layering (config.yaml + config.local.yaml + env vars) is a clean pattern for keeping secrets out of version control.
Chromecast support is explicitly marked experimental and untested, so half the target devices are a coin flip. Building from source requires Go 1.26+ and cmake because of the cgo whisper bindings — `go install` is broken by design, which is a friction point most Go users won't expect. The stream extractor depends entirely on a click-and-wait automation heuristic against headless Chrome, so it silently fails on any page with bot detection or non-standard player behavior, with no clear error surface. DLNA is only tested on Samsung; the protocol is notoriously inconsistent across vendors, so 'virtually every smart TV' in the docs is optimistic.