v0.1.0 — initial release
First public release of viser, a content-adaptive video encoding optimizer in pure Rust.
viser analyzes video content and computes optimal encoding parameters using perceptual quality measurement (VMAF) and convex-hull (Pareto frontier) analysis — tailoring encoding decisions to each video's complexity instead of a one-size-fits-all bitrate ladder.
Optimization methods
- Per-Title — custom bitrate ladder per video via convex-hull analysis across resolutions, codecs, and quality levels (BD-Rate, resolution-crossover enforcement, CRF/QP trial modes, checkpointing).
- Per-Shot — scene-boundary detection (FFmpeg scdet) with Trellis Lagrangian bit allocation across shots.
- Segment-Level CRF — per-1s-segment CRF adaptation (entropy + YDIF + DCT energy) with closed-loop VMAF verification.
- Context-Aware — device-specific ladders (mobile/desktop/TV/4K) with resolution caps, codec preferences, and VMAF model selection.
Highlights
- Codecs: H.264 (libx264), H.265 (libx265), AV1 (SVT-AV1 4.0)
- Quality metrics: VMAF, PSNR, SSIM
- Async + parallel trial encodes (tokio, semaphore-controlled)
- SHA-256 checkpointing for resumable multi-hour analyses
- Browser-based side-by-side comparison player with VMAF timeline
- 15-crate workspace, 124 unit tests, CI (fmt + check + clippy + test + doc) green
- BSD-2-Clause licensed
Requirements
- Rust 1.85+ (edition 2024)
- FFmpeg/FFprobe with libvmaf on PATH (or set
VISER_FFMPEG/VISER_FFPROBE)