CastLocal
Cast any local video to Chromecast — from your terminal.
A CLI and retro TUI (Far Manager-style) for streaming local video files to Chromecast devices. Handles format conversion automatically with hardware-accelerated transcoding.
Why?
- VLC's Chromecast support is broken. Tab casting kills quality. This just works.
- Plays any format — MKV, AVI, MOV, WMV, FLV, and more. Transcodes on-the-fly.
- Hardware-accelerated H.264 encoding (VideoToolbox on macOS).
- Starts playing in seconds via HLS streaming — no waiting for full transcode.
- Two interfaces: quick CLI or a keyboard-driven TUI with a dual-pane file manager.
Install
pipx install castlocal
Or with pip:
pip install castlocal
Requires
ffmpegon your system:brew install ffmpeg(macOS) orapt install ffmpeg(Linux).
Usage
CLI — cast a file directly
cast movie.mkv # auto-discovers device
cast movie.mp4 -d "Living Room" # target a specific device
cast -l # list available devices
Playback controls: [p]ause [f/b] ±30s [+/-] volume [q]uit
TUI — Far Manager-style interface
cast-tui
- Left pane: browse local files (video files highlighted in green)
- Right pane: discovered Chromecast devices (shown as folders)
- F5 to cast, F8 to stop, F9 to rescan, F3 for file info
Navigate with arrow keys, Tab to switch panes, Enter to select.
How It Works
- Discovers Chromecast devices on your network via mDNS/Zeroconf
- Probes the video file — if it's already MP4/H.264, streams it directly
- If not, transcodes to H.264+AAC using ffmpeg with HLS segmentation
- Serves segments over HTTP as they're encoded — playback starts in seconds
- Casts to the device with full playback controls
Supported Formats
| Native (no transcode) | Transcoded on-the-fly |
|---|---|
.mp4 .m4v .webm |
.mkv .avi .mov .wmv .flv .ts .m2ts |
License
MIT
Metadata
Release files for castlocal 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| castlocal-0.1.0.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| castlocal-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / castlocal-0.1.0.tar.gz
| Download URL | castlocal-0.1.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0bbc4bd303368f3926621654ac21d07e27bd4348eccf01c853872640e4f5457c
|
|
BLAKE2b-256 checksum How to use checksums |
ba53c5cf5c04415417a0393680dfe57694f4c678bade7d8c7d0ae3024b2f73b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / castlocal-0.1.0-py3-none-any.whl
| Download URL | castlocal-0.1.0-py3-none-any.whl |
|---|---|
| Size | 29.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be06320e7769bacd8eafa7c180e37f3599076ad1c2b1cea681f47f01d510edab
|
|
BLAKE2b-256 checksum How to use checksums |
37785a5a6c3ab47aeb75a028c80fd6eb54f0282bab7ee735ae13aed66e25b958
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|