{"id":1113,"date":"2025-08-05T05:58:00","date_gmt":"2025-08-05T03:58:00","guid":{"rendered":"https:\/\/www.television.ee\/post\/striimi-latentsus\/"},"modified":"2026-08-05T11:54:56","modified_gmt":"2026-08-05T09:54:56","slug":"striimi-latentsus","status":"publish","type":"post","link":"https:\/\/www.television.ee\/en\/post\/striimi-latentsus\/","title":{"rendered":"Stream latency: a technical guide for live streaming engineers"},"content":{"rendered":"<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>In brief:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Latency represents the time between the viewer and the camera, and reducing it is essential for interactive broadcasts. The best strategy involves protocol selection, encoder settings, and moving the CDN closer to achieve the lowest possible latency. In Estonia, WebRTC and LL-HLS protocols are the most suitable, offering real-time communication and stability for large audiences respectively.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Stream latency is the time it takes from a camera frame to the viewer's screen \u2014 this is known as glass-to-glass latency. For interactive engagement (Q&amp;A, auctions, live shopping), the goal is the lowest possible latency. For co-watching, moderate latency is suitable, while for traditional broadcast-style viewing, higher latency is accepted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quick action plan if you want to reduce latency immediately:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Select the protocol according to the purpose.<\/strong> <a href=\"https:\/\/liveapi.com\/blog\/what-is-video-latency\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">WebRTC<\/a> achieves 100\u2013500 ms, LL-HLS 2\u20135 s, while traditional HLS achieves 6\u201330 s.<\/li>\n\n\n\n<li><strong>Reduce encoder buffers and GOP.<\/strong> Keyframe interval 1\u20132 seconds, no B-frames.<\/li>\n\n\n\n<li><strong>Bring the server closer to the viewers.<\/strong> CDN edge computing cuts out the latency caused by geographical distance.<\/li>\n\n\n\n<li><strong>Configure the player buffer.<\/strong> Too aggressive, i.e., a short buffer without it creates more stuttering. In other words, by solving the latency problem, it is easy to rake over entirely different coals.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Do not start experimenting with a 0 ms buffer unless you have a robust CDN infrastructure. This is the most common mistake we have seen over the years, and it always ends with the same result: the viewer sees more loading spinners than content.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>For comparison:<\/strong> <a href=\"https:\/\/support.google.com\/youtube\/answer\/7444635\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">YouTube's ultra-low latency<\/a> the goal is under 5 seconds, low latency under 10 seconds. Both increase the risk of buffering compared to the standard mode.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Contents<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#kust-latentsus-tegelikult-tuleb-ja-kui-palju\">Where does latency actually come from and how much of it is there?<\/a><\/li>\n\n\n\n<li><a href=\"#milline-protokoll-sobib-sinu-uritusele\">Which protocol is suitable for your event?<\/a><\/li>\n\n\n\n<li><a href=\"#kuidas-latentsust-praktikas-vahendada\">How to reduce latency in practice?<\/a><\/li>\n\n\n\n<li><a href=\"#kuidas-moota-latentsust-tapselt\">How to measure latency accurately?<\/a><\/li>\n\n\n\n<li><a href=\"#kuidas-television-tootab-pariselus\">How does television work in real life?<\/a><\/li>\n\n\n\n<li><a href=\"#millal-aktsepteerida-suuremat-latentsust\">When to accept higher latency?<\/a><\/li>\n\n\n\n<li><a href=\"#peamised-jareldused\">Main conclusions<\/a><\/li>\n\n\n\n<li><a href=\"#miks-me-eestis-tihti-valime-just-need-lahendused\">Why do we in Estonia often choose precisely these solutions<\/a><\/li>\n\n\n\n<li><a href=\"#television-aitab-sul-latentsust-professionaalselt-lahendada\">Television helps you to professionally resolve latency<\/a><\/li>\n\n\n\n<li><a href=\"#autoriteetsed-allikad-edasiseks-lugemiseks\">Authoritative sources for further reading<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Where does latency actually come from and how much of it is there?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is a question whose answer surprises many. Latency does not come from a single place, but accumulates at every stage. Let's look through them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Encoder<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The length of the GOP is one of the biggest influencers. If the keyframe interval is long, the player has to wait for the arrival of a keyframe to start. By significantly shortening the keyframe interval, latency is noticeably reduced. B-frames (bidirectional frames) add encoding delay because encoding requires information from future frames. Slice encoding and low-latency modes (e.g. x264 <code>zero latency<\/code> preset) cut coding latency to a minimum.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Segmentation and protocol models<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Traditional HLS splits the video into 2 to 10-second segments. The player must wait until at least two segments are fully loaded before playback begins. This means that if a segment (chunk) is 6 seconds, the viewer cannot be less than 12 seconds behind live. This might seem like a lot, but for one-way viewing, this often doesn't matter and ensures a better viewing experience.<br>LL-HLS and LL-DASH use partial chunks of 200\u2013500 ms, which drastically cuts this waiting time. <a href=\"https:\/\/getstream.io\/blog\/low-latency-video-streaming\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">WebRTC buffers are 10\u201350 ms<\/a> compared to traditional 2 to 10-second buffers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Network transport<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One-way latency depends on physical distance and routing. Jitter, or uneven packet arrival, forces the player to increase the buffer. Packet losses require retransmission (ARQ) or FEC, both of which add delay. In the absence of a WebRTC P2P connection, a TURN relay is used, which typically adds 10\u201330 ms of latency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CDN and geographical distance<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Geographical distance adds measurable latency, and CDN caches also affect waiting time, especially when serving the first viewer. <a href=\"https:\/\/datatracker.ietf.org\/doc\/rfc9317\/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">RFC 9317<\/a> describes how network operations and transport protocols affect the overall viewer experience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Typical latency components<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Typical range<\/th><\/tr><\/thead><tbody><tr><td>Encoding (low-latency preset)<\/td><td>50\u2013200 ms<\/td><\/tr><tr><td>Segmentation (LL-HLS partial chunk)<\/td><td>200\u2013500 ms<\/td><\/tr><tr><td>Network transport (domestic Estonia)<\/td><td>5\u201330 ms<\/td><\/tr><tr><td>CDN\/edge latency<\/td><td>10\u201350 ms<\/td><\/tr><tr><td>Player buffer (aggressive)<\/td><td>200\u2013500 ms<\/td><\/tr><tr><td>Player buffer (conservative)<\/td><td>6\u201330 s<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.television.ee\/wp-content\/uploads\/2026\/08\/1785902282365_Latency-components-and-their-typical-duration-ranges-diagram.jpeg\" alt=\"Viivete osad ja nende tavap\u00e4rased kestusvahemikud \u2013 \u00fclevaatlik skeem\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Which protocol is suitable for your event?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The protocol choice is the single most important decision you make. Everything else is just tuning.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Minutes<\/th><th>Expected latency<\/th><th>Stability with packet loss<\/th><th>Implementation complexity<\/th><th>Infrastructure requirements<\/th><th>Best use case<\/th><\/tr><\/thead><tbody><tr><td>WebRTC<\/td><td>100\u2013500 ms<\/td><td>Weak (needs TURN)<\/td><td>High (SFU\/P2P)<\/td><td>TURN servers, SFU<\/td><td>Interactive: Q&amp;A, auction<\/td><\/tr><tr><td>SRT<\/td><td>100\u2013500 ms<\/td><td>ARQ<\/td><td>Average<\/td><td>UDP port, SRT server<\/td><td>contribution link, remote production<\/td><\/tr><tr><td>LL-HLS \/ LL-DASH<\/td><td>1\u20135 s<\/td><td>Good (CDN support)<\/td><td>Average<\/td><td>HTTP\/2, CDN partial-segment support<\/td><td>Large audience, low latency<\/td><\/tr><tr><td>Traditional HLS<\/td><td>6\u201330 s<\/td><td>Very good<\/td><td>Madal<\/td><td>Standard CDN<\/td><td>Broadcast, VOD-style<\/td><\/tr><tr><td>RTMP (ingest)<\/td><td>1\u20133 s (ingest)<\/td><td>Average<\/td><td>Madal<\/td><td>RTMP server<\/td><td>Ingest protocol, not final distribution<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WebRTC<\/strong> is the best choice if you need genuine real-time communication. However, things are more complicated when it comes to scaling: P2P works well for up to a few dozen viewers; for larger volumes, you need SFU (Selective Forwarding Unit) architecture. Around 20% of connections cannot be established via P2P due to firewalls and NAT restrictions, which is why planning for TURN servers is essential.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SRT<\/strong> is designed for unstable networks. Selective retransmission means that lost packets are resent without interrupting the entire stream, making SRT ideal for a contribution link from a studio to an ingest point, especially when working with a mobile connection or public Wi-Fi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>LL-HLS and LL-DASH<\/strong> is currently the best compromise between a larger audience and low latency. The partial-segment mechanism sends 200\u2013500 ms chunks before the segment is completed, which cuts traditional HLS latency to a fraction. CDN support is good, but requires HTTP\/2 and chunked transfer encoding support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Traditional HLS<\/strong> gives the most stable picture, but the 6 to 30-second latency makes it suitable only for broadcast-style feeds where the viewer does not expect a real-time response. <a href=\"https:\/\/optiview.dolby.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Dolby OptiView<\/a> It turns out that new protocols like HESP can bring latency down to approximately 1 second, but they require careful CDN and encoding planning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RTMP<\/strong> today it is primarily an ingest protocol, rather than for final distribution. OBS and ffmpeg use it to send the signal to a server, from where it is then forwarded using HLS, LL-HLS or another protocol.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to reduce latency in practice?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the sequence to follow. Do not jump to step 4 if step 1 has not been done.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Select the correct protocol<\/strong> (cf previous section). This is the single biggest influencer.<\/li>\n\n\n\n<li><strong>Configure the encoder for low latency.<\/strong><\/li>\n\n\n\n<li><strong>Bring the film closer to the viewers<\/strong> using a CDN or edge computing.<\/li>\n\n\n\n<li><strong>Configure player buffer<\/strong> according to network quality.<\/li>\n\n\n\n<li><strong>Improve network quality<\/strong> With QoS settings, 5G or a cable connection.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">FFmpeg low latency example<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ffmpeg -i input.mp4 \n  -c:v libx264 -preset veryfast -tune zerolatency \n  -g 60 -keyint_min 60 \n  -bf 0 \n  -c:a aac -b:a 128k \n  -f flv rtmp:\/\/ingest.server\/live\/streamkey\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>-g 60<\/code> means a 2-second GOP at 30 fps. <code>-tune zerolatency<\/code> purges internal buffers. <code>-bf 0<\/code> removes B-rolls.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.television.ee\/wp-content\/uploads\/2026\/08\/1785901264378_Close-up-of-video-encoder-hardware-with-cables.jpeg\" alt=\"L\u00e4hiplaan videokodeerija riistvarast koos \u00fchendatud kaablitega\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AV1 and HEVC offer better bitrate efficiency, but encoding time is significantly longer. For live streaming, use them only with hardware acceleration (NVENC, QuickSync).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CDN and edge<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chunked transfer encoding is mandatory for LL-HLS\/LL-DASH. Without it, the CDN cannot forward partial segments. HTTP\/2 multiplexing reduces connection overhead. Regional origin servers in Northern Europe (Frankfurt, Stockholm, Warsaw) are the best choices for Estonian viewers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FEC and ARQ settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">FEC adds redundant packets that allow lost packets to be recovered without retransmission. This adds a small bitstream overhead, but keeps latency stable. For SRT, configure <code>latency<\/code> parameter according to the network RTT: usually 3 to 4 times the RTT value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Professional advice:<\/strong> <em>If you\u2019re using a mobile connection, always reserve 20\u201330% bits for FEC. The Estonian mobile network is good, but at large events where everyone is using the same mast, packet loss can increase unexpectedly.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to measure latency accurately?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Measurement is where many make a mistake: they trust the player's statistics, which show only the player-side buffer, not the actual glass-to-glass latency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Photographic method for glass-to-glass measurement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The simplest and most accurate method: set one device to show the clock with millisecond precision, point a camera at it, and look at the player of the second device to see how big the difference is. Requires no special equipment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring thresholds<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Metric<\/th><th>Normal<\/th><th>Warning<\/th><th>Critical<\/th><\/tr><\/thead><tbody><tr><td>Glass-to-glass (interactive)<\/td><td>at 500 ms<\/td><td>100\u2013500 ms<\/td><td>6\u201330 s<\/td><\/tr><tr><td>glass-to-glass (low latency)<\/td><td>1\u20133 s<\/td><td>3\u20135 s<\/td><td>over 5 s<\/td><\/tr><tr><td>Jitter<\/td><td>at 20 ms<\/td><td>20\u201350 ms<\/td><td>over 50 ms<\/td><\/tr><tr><td>Packets<\/td><td>less than 1%<\/td><td>over 1%<\/td><td>over 2%<\/td><\/tr><tr><td>Player buffer length<\/td><td>1.5\u20133 s<\/td><td>2\u20135 s<\/td><td>over 5 s<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If the glass-to-glass latency for an interactive event exceeds 1 second, check in order: player buffer \u2192 CDN edge location \u2192 encoder GOP \u2192 network packet loss. The LiveAPI blog describes measurement methods and protocol latency ranges in detail.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How does television work in real life?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For over 10 years, we have produced live streams of conferences, sporting events and live shopping. In that time, we've made enough mistakes to know exactly what not to do. Here is what we actually use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Conference (Q&amp;A, interactive):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Protocol: LL-HLS on the platform side, SRT for the contribution link<\/li>\n\n\n\n<li>Keyframe interval: 1 second<\/li>\n\n\n\n<li>Player buffer: 1.5\u20132 seconds (compromise between stability and latency)<\/li>\n\n\n\n<li>CDN: Northern Europe edge, Frankfurt or Stockholm<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sports competition (large audience, commentary):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Protocol: LL-HLS<\/li>\n\n\n\n<li>Keyframe interval: 2 seconds<\/li>\n\n\n\n<li>Player buffer: 2\u20133 seconds<\/li>\n\n\n\n<li>Bitrate: 4\u20138 Mbps depending on the intensity of movement<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Live shopping (real-time reaction):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Minutes: WebRTC SFU up to 500 viewers, then LL-HLS<\/li>\n\n\n\n<li>Keyframe interval: 1 second<\/li>\n\n\n\n<li>TURN servers: always scheduled<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Preflight checklist before the event<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Test the ingestion connection at least 30 minutes before the start<\/li>\n\n\n\n<li>Plan an alternative ingest point (backup RTMP URL)<\/li>\n\n\n\n<li>Check the power supply: is there sufficient capacity at the location? If not, we will come with our own generator. This is part of our <a href=\"https:\/\/www.television.ee\/en\/post\/jatkusuutlik-videoproduktsioon\/\" target=\"_blank\" rel=\"noopener\">from a sustainable production philosophy<\/a>, where we plan energy use in advance, rather than reacting to the crisis on site.<\/li>\n\n\n\n<li>Measure the RTT to the ingest server: it should be under 50 ms from Estonia to Northern European servers<\/li>\n\n\n\n<li>Check for packet loss: over 1% requires an increase in FEC<\/li>\n\n\n\n<li>Test the player on three different networks (cable, Wi-Fi, 4G)<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201eLatency is like the weather: you can't fully control it, but you can prepare for it. Our pre-flight process is what separates a professional broadcast from an amateur one \u2014 not the equipment, but the preparation. And when a streamer knows how to interact with the audience, even a 3-second latency becomes almost unnoticeable to the viewer. <a href=\"https:\/\/www.television.ee\/en\/otseulekanne\/\" target=\"_blank\" rel=\"noopener\">Television.ee live broadcast production<\/a><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.television.ee\/en\/post\/live_ylekanne_on_nagu_tehnikasport\/\" target=\"_blank\" rel=\"noopener\">Rando Mere describes<\/a> live broadcasting as a technical sport: every detail counts, and the best results come from preparation, not improvisation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">When to accept higher latency?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not every event requires WebRTC. In fact, for most events, LL-HLS is completely adequate, and for some, even traditional HLS is more suitable than a low-latency solution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Decision matrix<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>User guide<\/th><th>Recommended latency<\/th><th>Minutes<\/th><th>Reason<\/th><\/tr><\/thead><tbody><tr><td>Live Q&amp;A, auction<\/td><td>at 500 ms<\/td><td>WebRTC<\/td><td>The viewer's reaction must be immediate<\/td><\/tr><tr><td>Sports competition, commentary<\/td><td>1\u20135 s<\/td><td>LL-HLS<\/td><td>Large audience, stability important<\/td><\/tr><tr><td>Conference, webinar<\/td><td>1\u20135 s<\/td><td>LL-HLS \/ SRT<\/td><td>Moderate interactivity<\/td><\/tr><tr><td>Broadcast, festival<\/td><td>6\u201330 s<\/td><td>HLS<\/td><td>Maximum stability and scalability<\/td><\/tr><tr><td>Contribution link (from studio to server)<\/td><td>100\u2013500 ms<\/td><td>SRT<\/td><td>Unstable network, requires ARQ<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Particularities of Estonian grid codes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Due to Estonia's geographical size, latency in local networks is very low. With Northern European CDN servers, the RTT is relatively low, which provides a good foundation for low latency. 5G coverage is growing, but at major events, it must be taken into account that all viewers are using the same mast, which can cause jitter issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Using local CDN services and telecom operators reduces geographic latency, but requires careful planning: does the CDN support the LL-HLS partial-segment mechanism? Is HTTP\/2 enabled? It is worth going through these questions before the event.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Scaling recommendation:<\/strong> Conduct a test audit at least a week before the big event. Measure glass-to-glass latency, jitter and packet loss under real-world conditions. Don't rely solely on lab results.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Main conclusions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Proper protocol selection, encoder settings, and CDN location, together with measurement, are the four pillars upon which every low-latency live broadcast relies.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Point<\/th><th>Details<\/th><\/tr><\/thead><tbody><tr><td>Selecting a protocol is the first step<\/td><td>WebRTC under 500 ms, LL-HLS 2\u20135 s, traditional HLS 6\u201330 s.<\/td><\/tr><tr><td>The encoder settings take effect immediately<\/td><td>A keyframe interval of 1\u20132 seconds and disabling B-frames reduces latency without infrastructure changes.<\/td><\/tr><tr><td>The CDN edge location is critical<\/td><td>Northern European servers (Frankfurt, Stockholm) give 20\u201340 ms RTT from Estonia.<\/td><\/tr><tr><td>Measure glass-to-glass, not just the buffer<\/td><td>The two-device photo method is the simplest and most accurate way to check actual latency.<\/td><\/tr><tr><td>Television provides a complete solution<\/td><td>Audit, test, deploy and support with a local power supply, if infrastructure is missing.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why do we in Estonia often choose precisely these solutions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Honestly: we've already made most of the mistakes ourselves, so you don't have to. Over ten years, we've learned that in the Estonian context, some choices are simply more sensible than others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Serverless computing and regional origin servers in Northern Europe are not just a matter of latency. They also reduce data transfer volume and the carbon footprint, because content does not have to travel halfway across the world. We generate our own electricity, optimise logistics and even use a minimum of single-use gaffer tape. The same logic applies to infrastructure choices: the closest server that gets the job done is always a better choice than a more distant, more powerful, but more resource-intensive alternative.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the client, this means fewer risks and fewer surprises. When we say that latency is under 3 seconds, that is measured, not calculated. And if something goes wrong, we are there, not in another time zone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Technical optimisation is important, but it does not replace good audience management. <a href=\"https:\/\/sossi.ee\/kes-on-striimer-ja-kuidas-see-too-tegelikult-valja-naeb\/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Streamer skills<\/a> Yes, audience engagement makes even a 3-second latency almost unnoticeable to the viewer when communication is smooth and the streamer knows how to keep viewers hooked.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Television helps you to professionally resolve latency<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Latency optimisation sounds complicated, but it doesn't have to be your problem. Television is big enough to cope, and small enough to care that your system runs without worry for years.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.television.ee\/wp-content\/uploads\/2026\/08\/1785739627334_television.jpg\" alt=\"Television\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our approach is simple: audit \u2192 test \u2192 deploy \u2192 support. We start by measuring your current glass-to-glass latency and identifying bottlenecks. We then recommend the protocol, encoder settings and CDN configuration according to your event type and audience. If there is no infrastructure at the venue, we come with our own power supply. If you need <a href=\"https:\/\/www.television.ee\/en\/striimimise-platvorm\/\" target=\"_blank\" rel=\"noopener\">streaming platform<\/a>, which supports the LL-HLS partial-segment mechanism and Northern European edge servers, we have it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conferences, sports competitions, live shopping, podcasts: we\u2019ve done it all and know where things go wrong. Get in touch and let's do a quick technical audit so you know exactly what you are dealing with. Check out our live streaming service and write to us about what your event is.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Authoritative sources for further reading<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to delve deeper, here are the sources this article relies on that will help you research further:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Standards and RFCs:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/datatracker.ietf.org\/doc\/rfc9317\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">RFC 9317: Operational Considerations for Streaming Media<\/a> \u2014 authoritative technical framework on network operations and QoE impact<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Protocol comparisons and practical guides:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/getstream.io\/blog\/low-latency-video-streaming\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GetStream: Low Latency Video Streaming<\/a> \u2014 A practical comparison of WebRTC buffers and protocols<\/li>\n\n\n\n<li><a href=\"https:\/\/liveapi.com\/blog\/what-is-video-latency\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">LiveAPI: What Is Video Latency?<\/a> \u2014 glass-to-glass definition and measurement methods<\/li>\n\n\n\n<li><a href=\"https:\/\/optiview.dolby.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Dolby OptiView: What is Low Latency Video Streaming?<\/a> \u2014 Overview of HESP and new protocols with CDN requirements<\/li>\n\n\n\n<li><a href=\"https:\/\/support.google.com\/youtube\/answer\/7444635\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">YouTube Help: Understand live streaming latency<\/a> \u2014 YouTube latency levels and trade-offs<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Discover how to reduce stream latency and improve the quality of your live broadcasts. Follow our technical advice to achieve the best result!<\/p>","protected":false},"author":1,"featured_media":1114,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[38],"tags":[],"class_list":["post-1113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tehniline"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/posts\/1113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/comments?post=1113"}],"version-history":[{"count":5,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/posts\/1113\/revisions"}],"predecessor-version":[{"id":1124,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/posts\/1113\/revisions\/1124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/media\/1114"}],"wp:attachment":[{"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/media?parent=1113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/categories?post=1113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.television.ee\/en\/wp-json\/wp\/v2\/tags?post=1113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}