VMAF Quality Analysis: Objective Video Quality Measurement
Use VMAF scoring in Vajra Cast for real-time video quality measurement, threshold alerting, and trend analysis.
Beyond Bitrate: Measuring What Viewers See
Bitrate tells you how much data a stream uses. It tells you nothing about how good it looks.
A 10 Mbps stream of static slides looks perfect. A 10 Mbps stream of fast-motion sports may be full of artifacts. Two encoders at the same bitrate can produce dramatically different quality depending on their algorithms, presets, and tuning.
VMAF (Video Multi-Method Assessment Fusion) solves this. Developed by Netflix, VMAF is a machine-learning-based metric that predicts how a human viewer would rate video quality on a scale of 0 to 100. It correlates more accurately with subjective quality than traditional metrics like PSNR or SSIM.
Vajra Cast integrates VMAF scoring directly, giving you objective quality measurement on every route with a single click.
How VMAF Works
VMAF combines multiple elementary quality metrics using a support vector machine (SVM) trained on thousands of human quality ratings:
- Visual Information Fidelity (VIF): measures how much visual information is preserved after encoding. Works at multiple spatial scales.
- Detail Loss Metric (DLM): quantifies the loss of fine detail and texture.
- Motion: accounts for temporal masking (viewers are less sensitive to artifacts during fast motion).
These metrics are fused into a single score:
| VMAF Score | Quality | Interpretation |
|---|---|---|
| 93-100 | Excellent | Imperceptible quality loss |
| 80-93 | Good | Minor artifacts visible only on close inspection |
| 70-80 | Fair | Noticeable but acceptable for most viewers |
| 50-70 | Poor | Clearly visible artifacts |
| Below 50 | Bad | Significant quality degradation |
For professional broadcasting, a VMAF score of 80+ is the typical target. Scores above 93 indicate diminishing returns. You could reduce bitrate and save bandwidth without perceptible quality loss.
VMAF in Vajra Cast
How It Works
Vajra Cast performs VMAF analysis by comparing the input (reference) to the output (distorted) of a route:
Input (original) ────────────────────┐
├→ VMAF comparison → Score
Output (encoded/transcoded) ─────────┘
This comparison is meaningful because:
- Passthrough routes should score 100 (no quality loss). Anything less indicates a problem
- Transcoded routes show the exact quality impact of your encoding settings
- Trend analysis reveals quality degradation over time (encoder drift, network issues)
Running a Quality Check
- Open the route detail view
- Click Quality Analysis
- Vajra Cast captures a sample from both input and output
- VMAF scoring runs on the sample
- Results appear in the dashboard: VMAF score, PSNR, SSIM
The analysis runs without interrupting the live stream. It samples a configurable duration (default: 10 seconds) at the stream’s native resolution.
Automated Scheduled Analysis
For 24/7 routes, configure periodic quality checks:
curl -X POST https://your-server:3000/api/routes/route-47/quality-check \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"schedule": "*/30 * * * *",
"duration": 10,
"metrics": ["vmaf", "psnr", "ssim"]
}'
This runs a 10-second quality check every 30 minutes and stores the results in the metrics history.
Setting Quality Thresholds
Why Thresholds Matter
VMAF scoring is most valuable when automated. Instead of manually checking quality, set thresholds and let the system alert you when quality drops below acceptable levels.
Configuring Thresholds
In the route settings, set:
- Minimum VMAF score: trigger an alert when the score falls below this value (e.g., 80)
- Minimum PSNR: secondary quality metric threshold (e.g., 35 dB)
- Alert action: log, webhook, or email notification
Threshold Recommendations by Use Case
| Use Case | Minimum VMAF | Notes |
|---|---|---|
| Premium broadcast (sports, live events) | 85 | Viewers expect broadcast quality |
| Standard streaming (corporate, education) | 75 | Acceptable for most audiences |
| Surveillance / monitoring | 60 | Content is functional, not aesthetic |
| Preview / confidence monitoring | 50 | Just needs to be watchable |
VMAF for Transcoding Validation
When configuring hardware transcoding, VMAF helps you find the optimal quality-bitrate trade-off:
- Start with your target bitrate (e.g., 6 Mbps for 1080p)
- Run a VMAF analysis
- If VMAF > 93: you can reduce bitrate (saving bandwidth) without perceptible quality loss
- If VMAF < 80: increase bitrate or adjust encoding preset
- Iterate until you find the sweet spot
This is more reliable than eyeballing quality or relying on bitrate alone.
Alerting on Quality Degradation
Prometheus Integration
VMAF scores are exposed via the Prometheus metrics endpoint:
vajracast_vmaf_score{route_id="route-47",route_name="Stadium Main"} 88.4
vajracast_psnr_db{route_id="route-47",route_name="Stadium Main"} 38.2
vajracast_ssim{route_id="route-47",route_name="Stadium Main"} 0.965
Grafana Alert Rule
alert: VajraCastQualityDegradation
expr: vajracast_vmaf_score < 80
for: 5m
labels:
severity: warning
annotations:
summary: "Video quality below threshold on {{ $labels.route_name }}"
description: "VMAF score is {{ $value }} (threshold: 80). Check encoding settings or input quality."
The for: 5m clause prevents alerts on transient quality dips (e.g., scene changes with extreme motion). A sustained 5-minute drop below threshold indicates a real problem.
Quality Dashboard
Track VMAF scores over time in Grafana:
- VMAF timeline: plot scores over 24 hours to spot patterns (quality drops during peak hours, for example)
- Score distribution: histogram of VMAF scores across all routes
- Quality vs. bitrate scatter: identify routes that are over-bitrated (high VMAF, high bitrate) or under-bitrated (low VMAF, low bitrate)
VMAF vs. Other Quality Metrics
PSNR (Peak Signal-to-Noise Ratio)
- What it measures: Pixel-level difference between original and encoded frames
- Strengths: Fast to compute, well-understood
- Weaknesses: Does not correlate well with human perception. A blur and a sharp artifact can have the same PSNR but look very different to viewers.
- Vajra Cast: Available alongside VMAF for reference
SSIM (Structural Similarity Index)
- What it measures: Structural similarity: luminance, contrast, and structure comparison
- Strengths: Better perceptual correlation than PSNR
- Weaknesses: Less accurate than VMAF for video (originally designed for still images)
- Vajra Cast: Available alongside VMAF for reference
Why VMAF Wins
VMAF was trained specifically on video content with human quality ratings. It accounts for factors that PSNR and SSIM miss:
- Temporal masking: viewers tolerate more artifacts during fast motion
- Content complexity: complex scenes need more bits than simple ones
- Display resolution: artifacts matter more on large screens
Netflix, YouTube, and major broadcasters use VMAF as their primary quality metric. Vajra Cast exposes all three (VMAF, PSNR, SSIM) so you can cross-reference, but VMAF should be your primary decision-making metric.
Practical Workflows
Workflow 1: Encoding Preset Validation
Before going live with a new hardware transcoding configuration:
- Set up the route with your intended encoding settings
- Feed a representative test clip (sports footage, talking head, graphics, whatever matches your content)
- Run VMAF analysis at each encoding preset (Fast, Balanced, Quality)
- Compare VMAF scores against CPU/GPU usage
- Select the preset that meets your quality threshold at the lowest resource cost
Workflow 2: Network Quality Monitoring
For routes receiving SRT streams over the internet:
- Schedule VMAF checks every 15 minutes
- Correlate VMAF scores with SRT packet loss metrics
- When VMAF drops but packet loss is low: the problem is at the encoder
- When VMAF drops and packet loss is high: the problem is the network
- Use this correlation to direct troubleshooting to the right team
Workflow 3: Bitrate Optimization
For multi-output routes using zero-copy distribution with selective transcoding:
- Run VMAF on each transcoded output
- Identify outputs where VMAF > 93 (over-provisioned)
- Reduce bitrate by 10-15% on those outputs
- Re-run VMAF to confirm quality remains acceptable
- Repeat until VMAF is in the 85-93 range (optimal quality-to-bitrate ratio)
This workflow can save 20-30% bandwidth across your infrastructure without perceptible quality impact.
Next Steps
- Configure hardware transcoding and validate quality with VMAF
- Set up Prometheus and Grafana monitoring for quality score dashboards
- Explore Docker and Kubernetes deployment for scalable quality analysis
- Return to the Broadcast Streaming Software guide for the complete platform overview