Viq
Video Queuing Analysis Tool
Networked systems video characterization
Viq executes comprehensive live video parameter search to measure the performance of a networked system for one or multiple streams and identify weaknesses.
See the User Manual.
Figure 1: Viq analysis of maximum bitrate and number of streams.
Usage
Figure 2: Viq frame-by-frame analysis of multiple streams in the built-in GUI. Here we can see several artifacts at once: freezes (positive slope), video sped up (negative slope), and lag (a constant offset).
Viq is a single binary with a client-server architecture, composed of a sender
and a receiver bundled in the same viq binary.
viq receiver --initial-queue-depth 1 --fps 20
viq sender localhost:4462 --fps 60 --i-period 20 --i-size-multiplier 5 --bitrate 3.5M
Viq also comes bundled with parameter-sweep scripts to quickly get a sense of the general performance of a system:
scripts/sweep-receiver.sh
scripts/sweep-sender.sh
Complex and dynamic encoder behavior can also be scripted, for example, unscheduled I-frames:
viq sender localhost:4462\
--fps 60\
--script-frame-table scripts/patterns/random-burst.koto\
--bitrate 3.5M
Figure 3: Using Viq to find required buffer depth for a stable video link.
Downloads
| Release | Platform | Link |
|---|---|---|
| [LATEST] 1.5.1 | aarch64-unknown-linux-gnu | Download |
| [LATEST] 1.5.1 | aarch64-unknown-linux-musl | Download |
| [LATEST] 1.5.1 | x86_64-unknown-linux-gnu | Download |
| [LATEST] 1.5.1 | x86_64-pc-windows-gnu | Download |
| 1.4.0 | aarch64-unknown-linux-gnu | Download |
| 1.4.0 | aarch64-unknown-linux-musl | Download |
| 1.4.0 | x86_64-unknown-linux-gnu | Download |
| 1.4.0 | x86_64-pc-windows-gnu | Download |
| 1.3.0 | aarch64-unknown-linux-gnu | Download |
| 1.3.0 | aarch64-unknown-linux-musl | Download |
| 1.3.0 | x86_64-unknown-linux-gnu | Download |
| 1.3.0 | x86_64-pc-windows-gnu | Download |
| 1.2.0 | aarch64-unknown-linux-gnu | Download |
| 1.2.0 | aarch64-unknown-linux-musl | Download |
| 1.2.0 | x86_64-unknown-linux-gnu | Download |
| 1.2.0 | x86_64-pc-windows-gnu | Download |
| 1.1.0 | aarch64-unknown-linux-gnu | Download |
| 1.1.0 | aarch64-unknown-linux-musl | Download |
| 1.1.0 | x86_64-unknown-linux-gnu | Download |
| 1.1.0 | x86_64-pc-windows-gnu | Download |
| 1.0.0 | aarch64-unknown-linux-gnu | Download |
| 1.0.0 | aarch64-unknown-linux-musl | Download |
| 1.0.0 | x86_64-unknown-linux-gnu | Download |
| 1.0.0 | x86_64-pc-windows-gnu | Download |
Release Notes
1.5.1
- Fix incorrect throughput when using the model frame table.
- Increase maximum frame size.
1.5.0
- Further threading and responsiveness improvements.
- Clickable plots.
- Receiver configuration via GUI.
- Frames over the network tagged with frame number.
- Wireshark frame decoding.
1.4.0
Built in web GUI. Large threading improvements for better timings and power consumption.
1.3.0
Improved --bitrate precision.
Support for complex scripted traffic profiles.
1.2.0
Bug-fixes.
Binary unit multipliers support.
1.1.0
Introduces file frame tables and several improvements to parameter ergonomics and naming.
1.0.0
First public release.
Introduces the Viq model and procedural frame tables.
Notice
Copyright © 2026 Felipe Tavares