qast Documentation
qast casts virtually any media source to any TV (Chromecast, DLNA, Roku) from the command line or Python code. It normalizes mixed media into one continuous H.264/AAC stream so playback works consistently across every TV protocol.
Installation
Install dependencies, build optional components, and verify your setup.
CLI Reference
Source syntax, device targeting, queue options, capture flags, and practical commands.
Python API
Programmatic control with discover(), cast(), and the Qast queue controller.
Architecture
Pipeline stages, protocol internals, frame-based flow control, and design decisions.
Quick start
pip install qast[all]
qast "https://youtube.com/watch?v=dQw4w9WgXcQ"
That's it. qast discovers devices on your LAN, transcodes the video, and streams it to your TV.
Key concepts
- Always-transcode: Every input is normalized to H.264 Main / AAC in MPEG-TS. This guarantees playback on every TV without format guessing.
- PTS rewriting: Timestamps are rewritten for continuity across queue items so the TV sees one unbroken stream.
- Protocol abstraction: Chromecast protobuf, DLNA SOAP, and Roku ECP are hidden behind a single
cast()call. - Frame-accurate timing: Video frames are counted in MPEG-TS packets for bitrate-independent duration tracking.
Source docs
- README.md — full user guide
- api.md — Python API reference
- architecture.md — deep technical dive
- tv-protocols.md — protocol documentation
Created by Rich LeGrand · MIT License