
Glass-to-glass latency is the time between a frame entering the camera lens and the same frame appearing on your viewer's screen. It covers every stage in between, so it's the one latency number that matches what viewers feel. Classic HLS lands near 25 seconds; WebRTC stays under one second.
TL;DR:
Updated Oct 19, 2026: rewrote the AIOZ Stream section now that live streaming has shipped (RTMP ingest from OBS or PRISM Live Studio, HLS playback, Low Latency Mode in beta), added a seven-stage diagram, moved the measuring method to its correct source, and added a References list.
The first "glass" is the camera lens and the second is the viewer's screen. Glass-to-glass latency is the elapsed time between the two for a single frame. It's stricter than several terms vendors use as if they meant the same thing.
End-to-end latency often means encoder output to decoder input, which leaves out camera capture and display time. Protocol latency covers only what the player logic adds on top of a packaged stream. Contribution or first-mile latency is just the hop from encoder to origin. Each one helps when you debug a single stage, but none of them is what your viewer feels. If a vendor quotes "under 1 second latency" without saying which one they mean, ask.
The streaming engineers at Fora Soft break glass-to-glass latency into seven contributors, each with a typical range:

Add up every stage except the player buffer and you rarely pass one second, as Fora Soft notes, so one stage does almost all the damage. Encoder lookahead deserves a mention anyway, because it's an easy setting to leave on defaults. Lookahead lets the encoder study upcoming frames to compress better, but it must hold each of those frames before it outputs anything. A sports feed tuned for picture quality and an auction tuned for speed shouldn't share that setting, even when they run the same encoder.
A classic HLS player starts well behind the live edge on purpose. RFC 8216, section 6.3.3 says a client should not start on a segment less than three target durations from the end of the playlist. With 6-second segments, that's 18 seconds of buffer before encoding, packaging and CDN time. That's why classic HLS often lands around 25 seconds, whatever your CDN's speed.
Low-latency HLS goes after this exact stage: the player holds back a few small parts instead of three full segments, which is why it lands in the 2 to 5 second range. Our LL-HLS explainer covers the mechanics behind it, including partial segments, preload hints and blocking playlist reloads.
The gap between about 25 seconds for classic HLS and about 0.4 seconds for WebRTC is roughly 60x, and protocol design drives almost all of it, not network conditions. A viewer on gigabit fiber watching classic HLS still waits about 25 seconds. A viewer on average Wi-Fi watching WebRTC sees the stream in well under a second.
That's why "which protocol" usually matters more than "which CDN" when latency is your goal. A faster CDN might trim a few hundred milliseconds from stage five while leaving the 18-second player buffer untouched. Our HLS vs WebRTC guide walks through that choice use case by use case.
You don't need lab equipment for this, and Fora Soft calls the simplest approach the stopwatch-in-frame method. Run a millisecond stopwatch on a phone and point the camera that feeds your live stream at it. Then take one photo that shows both the phone and a monitor playing your stream of that same phone. The difference between the two times in that photo is your glass-to-glass latency.
Do this yourself rather than trusting a dashboard figure, because a platform's own "latency" metric often uses one of the narrower definitions above. Measure more than once, too, because conditions between your encoder and the ingest point change through the day, and one reading at a quiet moment can flatter you. A handful of readings across a normal broadcast window gives you a range instead of one optimistic number.
Live streaming on AIOZ Stream is documented and available: you send video from OBS Studio or PRISM Live Studio over RTMP, using a Server URL and a Stream Key from the dashboard. Viewers watch through the HLS playback URL, the player link or the embed code that AIOZ Stream returns for each session.
Here's how that path maps to the seven stages above:
The docs don't publish a latency figure for either mode, so measure your own stream with the stopwatch method before you promise viewers a number. To create a session through the API, the streamings reference documents this request (keys shown as placeholders):
curl --location --request POST 'https://api.aiozstream.network/api/live_streams/key_id/streamings' \
--header 'stream-public-key: your_public_key_here' \
--header 'stream-secret-key: your_secret_key_here' \
--data-raw '{
"title": "live_streaming_title",
"save": true,
"qualities": [
{ "resolution": "360p", "type": "hls", "container_type": "mpegts" },
{ "resolution": "720p", "type": "hls", "container_type": "mpegts" }
]
}'The response includes hls_url, player_url and iframe for the session. While you're live, the statistics endpoint reports frame rate and bitrate in and out, updated every 5 to 30 seconds. Next step: follow the Create Livestream guide to get your Stream Key.
Is glass-to-glass latency the same as buffering?
No. Buffering is a playback interruption, when the video stops and waits for data. Glass-to-glass latency is the steady delay between something happening in front of the camera and your viewer seeing it, even when playback runs with zero stalls.
Why do different tools report different latency numbers for the same stream?
They usually measure different parts of the pipeline: a CDN dashboard might report origin-to-edge time only, while a player SDK might count from manifest fetch to first frame. Both answer a narrower question than "camera to screen."
Does a bigger player buffer always mean a worse experience?
No, because a larger buffer absorbs more network jitter before the player stalls. For content where a few extra seconds don't matter, a bigger buffer trades latency for smoother playback on purpose.
Can you get WebRTC-level latency out of HLS by shrinking segments?
Only partly, and at a cost: shorter segments shrink the buffer, but they multiply the files your CDN serves, and you still pay a full request round trip for each one. LL-HLS's partial segments and preload hints remove that round trip directly.
Is the three-segment rule a hard requirement?
No. RFC 8216 uses "SHOULD NOT," so it's a strong default rather than a must, and some players tune it down for specific use cases at the cost of part of the jitter protection it provides.
Does audio latency matter separately from video?
Yes, and it's a common blind spot, because audio and video are often encoded, packaged and buffered on slightly different paths. They can drift out of sync even when the overall number looks fine.
What latency does AIOZ Stream's Low Latency Mode reach?
The docs don't state a number; they describe Low Latency Mode (Beta) as reducing the delay for interactive broadcasts. Measure your own stream with the stopwatch method in this article.

Stream from your phone to AIOZ Stream with PRISM Live Studio: Custom RTMP setup, documented 1080p and 720p bitrates, Adaptive quality and mobile stability tips.

Choose OBS encoder settings for AIOZ Stream: the documented 1080p30 values, the missing 720p figure, NVENC vs x264, keyframes, 60 fps and a test procedure.

Set up OBS Studio for AIOZ Stream: choose a Custom service, paste the RTMP server URL and stream key, then stream CBR at 4500 to 6000 Kbps with 1 s keyframes.

Seven steps to go live on AIOZ Stream with OBS or PRISM: stream key, session form, RTMP credentials, bandwidth math, and the first two minutes after you start.

Live streaming on AIOZ Stream: a stream key, one session per broadcast, RTMP from OBS or PRISM, HLS playback, plus restreaming, stats and an opt-in archive.

A web3 streaming platform delivers video through independent nodes and settles payments on a blockchain. How it differs from a CDN, and how AIOZ Stream does it.