What is HLS?
HTTP Live Streaming (HLS) is an adaptive bitrate streaming protocol developed by Apple in 2009. It is now the dominant standard for delivering live and on-demand video across the internet — used by Netflix, YouTube Live, Twitch, DSTV Now, and virtually every major South African broadcaster.
Unlike traditional progressive download, HLS breaks video into small segments (typically 2–10 seconds each) and delivers them over standard HTTP. This means HLS works through firewalls, CDNs, and load balancers without any special server configuration.
Understanding m3u8 Playlists
The core of any HLS stream is the .m3u8 playlist file — a plain-text index that tells the player where to find each video segment and what quality levels are available.
There are two types of m3u8 files:
- Master Playlist — lists all available quality levels (bitrates and resolutions). Your player downloads this first.
- Media Playlist — lists the actual
.tsor.fmp4segment files for one specific quality level.
A typical master playlist looks like this:
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360 360p/index.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1280x720 720p/index.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=8000000,RESOLUTION=1920x1080 1080p/index.m3u8
The player automatically switches between quality levels based on your available bandwidth — this is called Adaptive Bitrate Streaming (ABR).
How HLS Delivery Works
1. Encoding
Source video is encoded into multiple bitrates simultaneously using hardware or cloud encoders (FFmpeg, AWS MediaLive, etc.)
2. Segmentation
Each bitrate stream is split into small TS or fMP4 segments, typically 2–6 seconds. A new m3u8 playlist is generated every few seconds for live streams.
3. CDN Distribution
Segments are pushed to a Content Delivery Network (CDN) with edge nodes distributed globally. South African users typically hit Johannesburg or Cape Town PoPs.
4. Player Playback
The player fetches the master m3u8, selects a quality level, downloads segments sequentially, and buffers 15–30 seconds ahead for smooth playback.
HLS Bitrate Recommendations
| Resolution | Frame Rate | H.264 Bitrate | H.265 Bitrate | AV1 Bitrate |
|---|---|---|---|---|
| 480p (SD) | 30fps | 1.5–2.5 Mbps | 0.8–1.5 Mbps | 0.5–1.0 Mbps |
| 720p (HD) | 30fps | 2.5–4 Mbps | 1.5–2.5 Mbps | 1.0–1.8 Mbps |
| 1080p (FHD) | 30fps | 4–8 Mbps | 2–4 Mbps | 1.5–3 Mbps |
| 1080p (FHD) | 60fps | 6–12 Mbps | 3–6 Mbps | 2–4 Mbps |
| 4K UHD | 30fps | 15–25 Mbps | 8–15 Mbps | 5–10 Mbps |
Testing HLS Streams
You can test any HLS stream directly in your browser using Reddisa's free Stream Tester. Simply paste your .m3u8 URL and click "Test Stream" to play the stream, view bitrate information, check codec support, and analyse adaptive quality switching.
.m3u8 URL to instantly test playback in your browser.
HLS vs MPEG-DASH
HLS and MPEG-DASH are both adaptive streaming protocols, but they have important differences:
| Feature | HLS | MPEG-DASH |
|---|---|---|
| Origin | Apple (2009) | MPEG / ISO (2012) |
| Playlist format | .m3u8 (text) | .mpd (XML) |
| Native iOS/Safari | ✅ Yes | ⚠ Limited |
| Codec flexibility | H.264, H.265, AV1 | Any codec |
| CDN support | Excellent | Excellent |
| DRM support | FairPlay | Widevine, PlayReady |