Releases: Santitub/rtv
Release list
1.0.0
rtv 1.0.0 — first stable release
rtv is a fast video player for your terminal — with an optional native GUI (--gui) when you want one. A ~1 MB Rust binary that starts in 20 ms, decodes with FFmpeg, and paints into your terminal using its native graphics protocol.
After months of iteration, the initial roadmap is complete: five rendering backends, ffplay-grade A/V sync, hardware decode, network playback, and a windowed GUI — all tested and validated on real hardware.
Highlights
🖥️ Five rendering backends, auto-detected
- kitty graphics protocol — exact pixels, zlib-compressed over SSH, zero-copy shared memory locally (Linux & macOS)
- iTerm2 inline images and sixel for compatible terminals
- half-blocks and ASCII fallbacks that work anywhere, including plain TTYs
🎯 ffplay-grade A/V sync
Audio-master clock with the same drop/wait frame discipline as ffplay, mpv-style keyframe seeking, resilience to terminal resizes, suspend/resume and window storms. Median A/V offset ≈ 0 ms in steady state.
⚡ Hardware decoding
--hwdec with CUDA/VAAPI/VDPAU/VideoToolbox/D3D11VA, NVIDIA-aware driver ordering, native AV1 decoder probing, live HUD indicator and --verbose diagnostics for every fallback.
🌐 Internet playback
- Direct http/https URLs (TLS in all shipped builds)
- YouTube and other sites via yt-dlp (bundled in releases, self-updating), with separate DASH video+audio streams
- Twitch: native resolver (no yt-dlp needed, ~1 s to first frame), local DVR with real seek on live streams, ad detection, stream prefetch during ads, and native VOD support
- HLS (.m3u8) with master-playlist quality selection
- Pure audio files (mp3/flac/…) with a procedural visualizer
🪟 Optional GUI (--gui)
A windowed player (egui + wgpu) sharing the exact same playback core — progress bar with hover tooltip, keyboard shortcuts, fullscreen. Shipped as a separate -gui package per OS.
📦 Platforms
Prebuilt, self-contained packages for Linux (x86_64/arm64), Windows, macOS (Intel/Apple Silicon) and Android/Termux — each with FFmpeg bundled and validated in CI, including automated GUI integration tests on all three desktop OSes.
Benchmarks
On an RTX 3060 with --hwdec auto: 0.77s CPU time vs 2.86s software and 10.77s for mpv --vo=tct on the same 8-second HEVC clip. A 14× reduction in CPU vs terminal mpv.
License
Dual-licensed under MIT OR Apache-2.0.
English
Self-contained binaries: FFmpeg 7.1 is bundled inside every
package — nothing else needs to be installed. The
Linux/Windows/macOS packages also include yt-dlp (to play
YouTube URLs and the like: rtv <url>); rtv will use the one on
your PATH if you have a newer one, and the bundled copy updates
itself with yt-dlp -U. Termux has no yt-dlp build for Android:
pip install yt-dlp.
Each desktop platform ships two packages: the regular one
(terminal only) and the -gui one, which is the same rtv with
the extra window mode (rtv --gui video.mp4); everything else is
identical. Termux has no GUI variant (Android ships no X server;
it would need Termux:X11 separately).
| Platform | File | Requirements |
|---|---|---|
| Linux x86_64 | rtv-*-linux-x86_64.tar.gz |
glibc ≥ 2.35 (Ubuntu 22.04+), libasound2 |
| Linux x86_64 (GUI) | rtv-*-linux-x86_64-gui.tar.gz |
same + X11/Wayland |
| Linux arm64 | rtv-*-linux-arm64.tar.gz |
glibc ≥ 2.35 (Ubuntu 22.04+), libasound2 |
| Linux arm64 (GUI) | rtv-*-linux-arm64-gui.tar.gz |
same + X11/Wayland |
| Windows x86_64 | rtv-*-windows-x86_64.zip |
Windows 10+ |
| Windows x86_64 (GUI) | rtv-*-windows-x86_64-gui.zip |
Windows 10+ |
| macOS Intel | rtv-*-macos-x86_64.tar.gz |
macOS 13+ |
| macOS Intel (GUI) | rtv-*-macos-x86_64-gui.tar.gz |
macOS 13+ |
| macOS Apple Silicon | rtv-*-macos-arm64.tar.gz |
macOS 14+ |
| macOS Apple Silicon (GUI) | rtv-*-macos-arm64-gui.tar.gz |
macOS 14+ |
| Termux/Android aarch64 | rtv-*-termux-aarch64.tar.gz |
Termux from F-Droid; audio: pkg install pulseaudio |
| Termux/Android x86_64 | rtv-*-termux-x86_64.tar.gz |
(emulators/Android-x86) |
Usage: extract and run ./rtv video.mp4 (Windows: rtv.exe video.mp4).
The binary must stay next to its lib//libs/ folder (Linux/macOS/Termux)
or next to the DLLs (Windows).
Español
Binarios autocontenidos: FFmpeg 7.1 va incluido dentro de cada
paquete — no hay que instalar nada más. Los paquetes de
Linux/Windows/macOS incluyen además yt-dlp (para reproducir
URLs de YouTube y demás: rtv <url>); rtv usará el del PATH si
tienes uno más nuevo, y el incluido se actualiza con yt-dlp -U.
En Termux no hay build de yt-dlp para Android: pip install yt-dlp.
Cada plataforma de escritorio tiene dos paquetes: el normal
(solo terminal) y el -gui, que es el mismo rtv con el modo
ventana adicional (rtv --gui vídeo.mp4); todo lo demás es
idéntico. Termux no tiene variante GUI (Android no trae servidor
X; haría falta Termux:X11 aparte).
| Plataforma | Fichero | Requisitos |
|---|---|---|
| Linux x86_64 | rtv-*-linux-x86_64.tar.gz |
glibc ≥ 2.35 (Ubuntu 22.04+), libasound2 |
| Linux x86_64 (GUI) | rtv-*-linux-x86_64-gui.tar.gz |
ídem + X11/Wayland |
| Linux arm64 | rtv-*-linux-arm64.tar.gz |
glibc ≥ 2.35 (Ubuntu 22.04+), libasound2 |
| Linux arm64 (GUI) | rtv-*-linux-arm64-gui.tar.gz |
ídem + X11/Wayland |
| Windows x86_64 | rtv-*-windows-x86_64.zip |
Windows 10+ |
| Windows x86_64 (GUI) | rtv-*-windows-x86_64-gui.zip |
Windows 10+ |
| macOS Intel | rtv-*-macos-x86_64.tar.gz |
macOS 13+ |
| macOS Intel (GUI) | rtv-*-macos-x86_64-gui.tar.gz |
macOS 13+ |
| macOS Apple Silicon | rtv-*-macos-arm64.tar.gz |
macOS 14+ |
| macOS Apple Silicon (GUI) | rtv-*-macos-arm64-gui.tar.gz |
macOS 14+ |
| Termux/Android aarch64 | rtv-*-termux-aarch64.tar.gz |
Termux de F-Droid; audio: pkg install pulseaudio |
| Termux/Android x86_64 | rtv-*-termux-x86_64.tar.gz |
(emuladores/Android-x86) |
Uso: descomprimir y ejecutar ./rtv vídeo.mp4 (Windows: rtv.exe vídeo.mp4).
El binario debe permanecer junto a su carpeta lib//libs/ (Linux/macOS/Termux)
o junto a las DLLs (Windows).