Castor – Real‑Time Video Casting from Any Web Page to DLNA/UPnP TVs

Castor – Real‑Time Video Casting from Any Web Page to DLNA/UPnP TVs

Castor delivers real‑time, full‑quality video casting without a Chromecast or AirPlay

Castor captures the actual video stream from any web page, transcodes it on the fly, and streams it to any DLNA/UPnP‑compatible TV. The result is lag‑free, high‑resolution playback that beats screen‑mirroring and proprietary casting solutions.


How Castor works: headless Chrome + network sniffing

  • Castor launches a headless Chrome instance with a randomized fingerprint and stealth scripts to avoid bot detection.
  • It monitors all network traffic via the Chrome DevTools Protocol, capturing the video URL as soon as the page loads.
  • An action pipeline clicks the page, navigates into the largest iframe, solves a Cloudflare Turnstile if present, and retries the click as a fallback.
  • The captured stream is passed to ffmpeg for optional transcoding, then served to the TV through a DLDL/UPnP replay server.

"Castor launches headless Chrome with a randomized fingerprint and stealth scripts to hide automation. It watches all network traffic over the Chrome DevTools Protocol to capture the video stream…" – Castor README

The approach works on most streaming sites, though sophisticated anti‑bot measures can still block it.


Installation options – native binary, Homebrew, Docker, or source

Method Platform Notes
Native binary (recommended) macOS, Linux, Windows (via WSL) Requires Chrome/Chromium, ffmpeg, and ffprobe on PATH.
Homebrew cask macOS brew install --cask stupside/tap/castor
Docker image ghcr.io/stupside/castor Linux hosts Bundles Chrome, ffmpeg, ffprobe. Must run with --network host; Docker Desktop on macOS/Windows cannot reach the TV.
From source Any Go 1.26+ system Run make to build the vendored Whisper bindings and the binary.

"Docker can only reach your TV from a Linux host on the same LAN. Discovery is SSDP multicast… on macOS/Windows, run the native binary instead." – Castor README


Supported devices – DLNA/UPnP and experimental Chromecast

  • DLNA/UPnP MediaRenderer:1 – works with virtually every smart TV released in the last decade (Samsung, LG, Sony Bravia, Panasonic, Philips, Hisense, TCL, VIZIO, Sharp) and network players such as Kodi, VLC, and Plex.
  • Chromecast – implementation exists but is untested; contributions are welcome.

Run castor scan to discover all renderers on your network.


Quick start – casting by IMDB/TMDB ID

  1. Discover your TV
    castor scan
    
    Copy the exact device name from the output.
  2. Create a minimal config.yaml
    device:
      name: "Living Room TV"   # exact name from `castor scan`
      type: dlna
    
    sources:
      - proxies: ["https://vidsrc-embed.ru"]
        templates:
          movie: "/embed/movie/{itemID}"
          episode: "/embed/tv/{itemID}/{season}-{episode}"
    
  3. Cast a movie
    castor cast movie tt12300742
    
    The tool resolves the ID against the proxy URLs, extracts the stream, and sends it to the TV.

If you add a TMDB API key to config.yaml, you can use the interactive TUI (castor cast) to browse titles, filter by genre, and select episodes.


Advanced usage – casting arbitrary URLs and subtitles

  • Cast a raw stream URL
    castor cast url https://example.com/stream.m3u8
    
  • Burn auto‑generated subtitles (optional Whisper integration)
    whisper:
      enable: true
      # language: "en"
      # model_path: ""  # defaults to tiny English model (~75 MB)
    
    When enabled, Castor runs Whisper to generate subtitles and burns them into the video before streaming.

Community feedback from Hacker News

  • Alternative approaches – A commenter mentioned TV Explorer, a web‑based HLS aggregator that bypasses the need for a local extractor.
  • Legal concerns – Some users flagged the potential for piracy, noting that Castor itself hosts no content and the responsibility lies with the user to respect copyright.
  • Device compatibility – Users reported successful casting to a 15‑year‑old Samsung TV, confirming broad DLNA support.
  • Docker on macOS/Windows – Multiple comments highlighted that Docker Desktop cannot discover TVs due to network isolation, reinforcing the README warning.
  • Technical curiosity – One comment asked whether the Turnstile bypass is simply a click simulation, indicating interest in the robustness of the anti‑bot evasion.

Limitations and caveats

  • Bot protection – Castor’s headless‑Chrome approach can be thwarted by sophisticated anti‑bot systems; it may fail on sites with aggressive fingerprinting.
  • Source reliability – The proxies URLs in config.yaml are external and can go offline without notice; users must maintain them.
  • Docker networking – On non‑Linux hosts, Docker cannot reach the TV without a bridged Linux VM, making the native binary the practical choice.

Contributing and further development

  • The project welcomes contributions, especially for the experimental Chromecast backend and improvements to Turnstile handling.
  • See CONTRIBUTING.md in the repository for guidelines.

Bottom line

Castor turns a laptop into a real‑time video caster that streams the original quality directly to any DLNA/UPnP TV, eliminating the need for expensive IPTV boxes or proprietary casting hardware. Its open‑source nature, flexible configuration, and optional Whisper subtitle generation make it a powerful, cost‑effective tool for anyone looking to bridge web video and home entertainment.

Sources