VideoControl
Plays video in the terminal — local files or network streams — decoded with FFmpeg and rendered through Kitty graphics or a cell-based fallback.
The full reference for this control lives in Video Playback. This page is a short orientation and a set of links into it.
Overview
VideoControl decodes with FFmpeg and picks a render path to match the terminal. On Kitty-capable
terminals it draws real pixels; elsewhere it falls back to half-block, ASCII, or braille cells. The
default Auto mode resolves this for you, and the user can cycle concrete modes at runtime.
Sources are anything FFmpeg understands — a file path, or an HTTP/RTSP/HLS/RTMP/FTP URL. An optional overlay bar shows transport state and keyboard hints, and the control handles resize, looping, and playback events.
FFmpeg must be installed — see Requirements.
Quick Start
var video = Controls.Video("movie.mp4")
.WithOverlay()
.Fill()
.Build();
window.AddControl(video);
video.Play();
Streaming works the same way:
var stream = Controls.Video()
.WithSource("https://example.com/live.m3u8")
.Fill()
.Build();
Where to read more
| Topic | Section |
|---|---|
| Installing FFmpeg per platform | Requirements |
All properties (Source, RenderMode, PlaybackState, TargetFps, Looping, …) |
VideoControl → Properties |
Play, Pause, Stop, TogglePlayPause, PlayFile, Stream, CycleRenderMode |
VideoControl → Methods |
| All builder methods | Builder API |
| Sizing and alignment | Sizing and alignment |
| Auto / Kitty / HalfBlock / ASCII / Braille | Render Modes |
| Network sources and their caveats | Streaming |
| Keyboard and mouse controls | Playback Controls |
| The status bar and its hints | Overlay Status Bar |
PlaybackStateChanged, PlaybackEnded |
Events |
| Missing FFmpeg, missing file, decode failure | Error Handling |
| Frame pipeline and threading model | Architecture |
| A full working player | Complete Example — Video Player App |
See Also
- Video Playback — the complete guide
- ImageControl — still images, same rendering backends
- CanvasControl — draw your own frames
- TerminalControl — embed a PTY-backed shell
- Controls Reference — all controls