Skip to content

Caster 0.5.0

Choose a tag to compare

@serrebidev serrebidev released this 04 Sep 21:12
· 27 commits to master since this release

First public release.

Caster sends a file, a URL, your screen, one app window, or just this PC's sound to whatever is on your network — Chromecast, AirPlay, UPnP/DLNA, Sonos, Roku, or Kodi. Tick several devices and they all play at once.

Built to be used without seeing it: every control carries a real accessible name, the device list is a checklist rather than a multi-select, and status is spoken through NVDA directly instead of sitting in a status bar.

What's in it

  • Six protocols, discovered in parallel — a full scan takes about five seconds.
  • Screen, single-window, and system-audio casting. System audio goes out as uncompressed PCM with no encoder in the path.
  • MPEG-TS remuxed to HLS for receivers that won't take it raw; video is only transcoded when the codec leaves no choice.
  • Yamaha MusicCast: powers the receiver on to cast, selects the right input, restores the input it was showing when you stop, and controls volume on the receiver's own scale in real dB.
  • UPnP renderers are asked what they accept, so a stereo amplifier is never sent a picture it will refuse.
  • Microphone mixing, A/V offset, quality presets, sleep timer, tray controls, favourites, and six system-wide hotkeys.

Notable fixes

Playback jumping backwards on live IPTV. ffmpeg reconnected to dropped streams by asking for Range: bytes=<offset>. A live stream has no such position, so the server replied with its current live edge and ffmpeg spliced it in as though it followed on — the overlap was audio you had already heard. Measured on a real channel: 1.88x of real time was being produced, meaning most of it arrived twice. Now 0.89x, with zero byte-offset resumes and zero corrupt packets.

Connecting took 20-30 seconds. Now a few seconds. The screen-grabber probe burned a hard 10s on every launch and is now cached to settings and warmed in the background; a throwaway encoder was being run and discarded before the receiver ever connected; the Cast receiver was relaunched even when already running, then slept a flat 2.5s; and the "Playing" announcement was gated behind a 1.5s poll that made an instant cast sound stuck.

Casts reported as failed while actually playing. The Cast media status keeps describing the previous session until the receiver sends one for the new load, and INTERRUPTED is what it says when a session is replaced — which is what loading something else does. Loads issued shortly after a stop were read as rejections.

Also fixed: a modal error dialog that froze the window when another program owned a hotkey, several leaks (HLS relay ports and threads, per-play Zeroconf, temp directories), a relay that could never play a local file, and unreliable device discovery over Wi-Fi — SSDP is lossy, so the search is now repeated across the window.

Install

Download Caster-portable.zip, extract it anywhere, run Caster.exe. ffmpeg.exe ships beside it, so there is nothing else to install. Settings live in %APPDATA%\Caster\settings.json.

Windows only. MIT licensed.