Skip to content

v0.1.0 — initial release

Choose a tag to compare

@vbasky vbasky released this 29 May 07:28

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)

See the README and docs/ for details.