Build1 distinct publisher3 min readUpdated
A practitioner's guide argues most live streaming failures start by collapsing ingest and delivery into a single choice. The rest come from a player buffer nobody checked.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A practical guide to live streaming published on dev.to opens with a diagnosis worth taking seriously: the single most common mistake is treating "streaming protocol" as one choice when it is two [1]. That matters because ingest and delivery have opposing constraints, and because the property that makes HTTP delivery cheap to scale is the same property that makes it slow [2][11].
Ingest is getting video from a camera, encoder or browser into your server. Delivery is getting it from your server to viewers. According to the guide, they have different constraints and you almost never use the same protocol for both [2]. A typical stack ingests over RTMP or SRT and delivers over HLS; another ingests WebRTC and delivers WebRTC; mixing is normal and expected [3].
On the ingest side the choice is mostly about how bad your uplink is. RTMP is old and TCP-based and still everywhere, every encoder speaks it, OBS defaults to it, and latency sits at 2 to 5 seconds [4]. Classic RTMP is limited to H.264 and AAC, though the Enhanced RTMP spec has added HEVC and AV1 [5]. Because it is TCP, packet loss becomes head-of-line blocking and the stream stalls rather than gracefully dropping quality [6]. SRT answers that with UDP, its own ARQ retransmission layer, a configurable latency buffer and built-in AES encryption, aimed squarely at pushing broadcast-quality video over the public internet [7]. If the source is on a flaky link, 4G, or another continent, the guide calls SRT the usual right answer [8]. Publishing it is one ffmpeg line to an srt:// URL with a streamid [22]. If you are pulling from surveillance hardware you are pulling RTSP whether you like it or not [9], and WHIP standardises WebRTC signalling over plain HTTP for browser publishing without a plugin [10].
Delivery is where the real conflict lives. HLS and DASH chop the stream into segments served over plain HTTP, which is precisely why any CDN can cache them and why they scale to millions of viewers cheaply, at a cost of 10 to 30 seconds of latency [11]. LL-HLS and LL-DASH claw that back to 2 to 6 seconds using partial segments, blocking playlist reloads and preload hints, while keeping CDN compatibility [12]. WebRTC, with WHEP for standardised playback, gets under half a second and is the only real option for auctions, betting, two-way audio or remote control, but it is not natively cacheable by traditional CDNs, so scaling works differently [13]. Best-case low-latency HLS is still around four times the WebRTC ceiling [2].
Before changing protocol, audit the budget. End-to-end latency is a sum of encoder buffer, network transit, server processing, segment duration, playlist window, CDN propagation and player buffer [15]. Apple's classic recommendation was 6-second segments and players typically buffer three of them, which is 18 seconds before a single frame is transcoded or a hop crossed [16]. That alone is 60 percent of the 30-second worst case [1]. The player is the part teams miss: it may be holding 15 seconds because that is its default [18]. So when someone reports 30-second HLS latency and asks you to fix the server, the server is probably not the problem, and shorter segments plus a smaller playlist window plus a tuned player get most of the way [19]. Below roughly 2 seconds, tuning stops working, because segmented delivery has a floor [20].
The operating rule from the guide is to pick the highest latency you can actually tolerate, since every step down costs money, CDN compatibility, or both [21].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The single most common mistake in live streaming is treating "streaming protocol" as one choice; it is two.
Ingest is getting video from a camera, encoder or browser into your server; delivery is getting it from your server to viewers. They have different constraints and you almost never use the same protocol for both.
A typical stack ingests over RTMP or SRT and delivers over HLS; another ingests WebRTC and delivers WebRTC. Mixing is normal and expected.
RTMP is old, TCP-based and still everywhere: every encoder speaks it, OBS defaults to it, and latency is typically 2 to 5 seconds.
Classic RTMP is limited to H.264 and AAC, though the Enhanced RTMP spec has added HEVC and AV1.
Because RTMP is TCP-based it degrades badly on lossy networks: packet loss becomes head-of-line blocking and the stream stalls instead of gracefully dropping quality.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Coherent single-source explainer, no measurements
All claims trace to one self-published practitioner guide. Its protocol descriptions and latency budget are internally consistent and specific (stage-by-stage budget, 6-second segments times three-segment buffer, 2–6s LL-HLS, sub-0.5s WebRTC), and it hedges appropriately where standards are unfinished. But nothing is measured, no test rig, versions, player names or CDN configurations are given, and no independent publisher corroborates the numbers, so the ranges rest on author authority alone.
No dated deployment or usage evidence
The guide asserts ecosystem ubiquity qualitatively (every encoder speaks RTMP, OBS defaults to it, HTTP segmenting dominates delivery) but supplies no dated releases, deployments, usage disclosures or measured share for any protocol, and no second source in the cluster reports adoption. There is nothing to score without inferring facts the material does not contain.
Slightly understated relative to its claims
The piece is close to aligned and marginally conservative: it opens by disclaiming vendor talk, prices the downside of every option it recommends (CDN loss for WebRTC, cost per latency step, self-run SFU fleets), and refuses to endorse MoQ for production. The mild negative reflects that its most useful contentions — that most HLS latency is structural and that the player is usually the culprit — are stated as rules of thumb rather than pushed with the evidence that would justify them, so the headline framing undersells rather than oversells.
Low visible commercial incentive, undisclosed affiliation
Self-published developer post on a community platform that names no product, vendor or price and explicitly disclaims vendor talk; the only code sample is generic ffmpeg against a placeholder host. Residual score reflects the usual audience-building incentive of platform-published tutorials and the absence of any author affiliation disclosure to rule out an undeclared stake in the tooling described.
Moderate-low: consistent but unverified and single-sourced
Confidence is capped by the one-publisher cluster and the absence of any adoption measurement: the claims are specific and mutually consistent, and the low incentive profile reduces distortion risk, but nothing here is independently verifiable from the supplied material and several figures are conventional ranges stated without provenance.
build
Every viewer hits your HLS key endpoint in the same second, and almost nobody tests it1 distinct publisher
build
Four video re-tunes later, your audio ladder is still one 128 kbps AAC-LC track1 distinct publisher
build
One webrtc.NewAPI() per SDP offer is a load-bearing bug, and thirty viewers will find it1 distinct publisher
build
Two timeout numbers, not new code, fixed a nightly job that failed 2-3 mornings a week1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 19, 2026