Every play loads the same selected manifest in its own dash.js
low-latency instance (CMAF + true chunked-transfer live edge), so this stresses
the origin/CDN exactly as N simultaneous viewers would.
Join time = initialize → first video frame rendered.
Buffer ratio = total rebuffering time ÷ total watch time (lower is better).
Rebuffered plays = plays that stalled at least once after joining.
Start-up error rate = plays that hit a fatal error before the first frame.
In-stream error rate = plays with an error after joining, plus errors per play·minute.
Processing time = per-response download duration from dash.js HttpList metrics.