Skip to main content
🇪🇸 Español 🇧🇷 Português 🇩🇪 Deutsch
Image Converter Video Converter Audio Converter Document Converter
Tools Guides Formats Pricing API
Log In
Guide

HLS & M3U8 Format Guide: HTTP Live Streaming Protocol

PC By Pablo Cirre

Frequently Asked Questions

An M3U8 file is the text-based playlist format used by HLS (HTTP Live Streaming). It is a plain text file (UTF-8 encoded, hence the "8" suffix) with special tags beginning with "#EXT-". There are two types: a master playlist that lists all available quality renditions (240p, 360p, 720p, etc.) with their bandwidth and codec information, and media playlists that list the actual video segment files (.ts or .fmp4) with their durations. The HLS player downloads the master playlist first, picks the appropriate quality based on network speed, then downloads the media playlist and fetches segments sequentially.

An M3U8 Datei is the text-based playlist Format used by HLS (HTTP Live Streaming). It is a plain text Datei (UTF-8 encoded, hence the "8" suffix) mit special tags beginning mit "#EXT-". There are two types: a master playlist that lists all verfügbar quality renditions (240p, 360p, 720p, etc.) mit their bandwidth und Codec information, und media playlists that list the actual video segment Dateien (.ts oder .fmp4) mit their durations. The HLS player downloads the master playlist first, picks the appropriate quality based on network speed, then downloads the media playlist und fetches segments sequentially.

An M3U8 archivo is the text-based playlist formato used by HLS (HTTP Live Streaming). It is a plain text archivo (UTF-8 encoded, hence the "8" suffix) con special tags beginning con "#EXT-". There are two types: a master playlist that lists all disponible quality renditions (240p, 360p, 720p, etc.) con their bandwidth y codec information, y media playlists that list the actual video segment archivos (.ts o .fmp4) con their durations. The HLS player downloads the master playlist first, picks the appropriate quality based on network speed, then downloads the media playlist y fetches segments sequentially.

AV1 is the most efficient (royalty-free, ~30% smaller than H.265) but encoding is slow. H.265 (HEVC) saves ~30–50% over H.264 and is supported by every modern phone and desktop. H.264 remains the safest baseline for legacy compatibility. Rule of thumb: archives → AV1, daily use → H.265, broadest reach → H.264.

Adaptive bitrate (ABR) streaming works by encoding the same video at multiple quality levels (e.g., 240p at 400 Kbps, 720p at 2.8 Mbps, 1080p at 5 Mbps), each as separate segment sequences. The master M3U8 playlist lists all renditions with their BANDWIDTH values. The HLS player monitors the download speed of each segment and compares it to the current rendition's bandwidth. If downloads are consistently slower than the bandwidth needed, the player switches down to a lower quality. If consistently faster, it switches up. This allows smooth video playback even on variable connections.

Adaptive bitrate (ABR) streaming funciona by codificação the same video at multiple quality levels (e.g., 240p at 400 Kbps, 720p at 2.8 Mbps, 1080p at 5 Mbps), each as separate segment sequences. The master M3U8 playlist lists all renditions com their BANDWIDTH values. The HLS player monitors the baixar speed of each segment e compares it para o current rendition's bandwidth. If downloads are consistently mais lento que the bandwidth needed, the player switches down para um baixaer quality. If consistently faster, it switches up. This permite smooth video playback even on variable connections.

Adaptive Bitrate (ABR) streaming works by Codierung the same video at multiple quality levels (e.g., 240p at 400 Kbps, 720p at 2.8 Mbps, 1080p at 5 Mbps), each as separate segment sequences. The master M3U8 playlist lists all renditions mit their BANDWIDTH values. The HLS player monitors the herunterladen speed von each segment und compares it zum current rendition's bandwidth. If downloads are consistently langsamer als the bandwidth needed, the player switches down zu einem niedriger quality. If consistently faster, it switches up. This erlaubt smooth video playback even on variable connections.

CRF (Constant Rate Factor) is the best default for offline files: ffmpeg picks the bitrate frame-by-frame to maintain perceived quality. Two-pass is only better when you must hit an exact final size (DVD targets). Constant bitrate is for streaming with a fixed channel. For "smallest at quality X" always use CRF.

FFmpeg handles HLS creation natively. For a basic single-quality HLS: `ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 6 -hls_playlist_type vod output.m3u8`. This creates output.m3u8 and a series of segment files (segment000.ts, segment001.ts, etc.) with 6-second duration each. For multi-bitrate HLS (adaptive streaming), you need to use FFmpeg's filter_complex to split into multiple renditions and use -var_stream_map to create separate output streams. Dedicated transcoding services (AWS MediaConvert, Mux, Cloudflare Stream) handle multi-bitrate packaging automatically.

FFmpeg handles HLS creation natively. para a basic single-quality HLS: `ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 6 -hls_playlist_type vod output.m3u8`. This creates output.m3u8 e a series of segment arquivos (segment000.ts, segment001.ts, etc.) com 6-second duration each. para multi-bitrate HLS (adaptive streaming), Você precisa usar FFmpeg's filter_complex to split em multiple renditions e usar -var_stream_map to create separate output streams. Dedicated transcoding services (AWS MediaConvert, Mux, Cloudflare Stream) handle multi-bitrate packaging automatically.

FFmpeg handles HLS creation natively. für a basic single-quality HLS: `ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 6 -hls_playlist_type vod output.m3u8`. This creates output.m3u8 und a series von segment Dateien (segment000.ts, segment001.ts, etc.) mit 6-second duration each. für multi-bitrate HLS (adaptive streaming), Sie müssen verwenden FFmpeg's filter_complex to split in multiple renditions und verwenden -var_stream_map to create separate output streams. Dedicated transcoding services (AWS MediaConvert, Mux, Cloudflare Stream) handle multi-bitrate packaging automatically.

Common causes: (1) variable framerate source rendered as constant (use <code>-vsync vfr</code> to preserve VFR); (2) different audio sample rates not resampled (add <code>-ar 48000</code>); (3) container limitations (MP4 with variable framerate misbehaves — prefer MKV during editing, encode to MP4 only at the end). Always run <code>ffprobe</code> on both source and output to compare timing.

Standard HLS has 15-30 seconds of live latency because segments must be fully produced before they can be served (typically 4-8 second segments, and the player buffers 3-5 of them). Low-Latency HLS (LL-HLS), introduced by Apple in 2019, reduces this to 2-5 seconds through two key mechanisms: partial segments (the server publishes incomplete segments incrementally as they are produced) and preload hints (the playlist tells the player to start fetching the next partial segment before it exists). LL-HLS requires HLS version 9, fMP4 segments, and server support for HTTP/2 push or chunked transfer. Most major CDNs now support it.

Standard HLS has 15-30 seconds of live latency because segments must be fully produced antes they can be served (Tipicamente 4-8 second segments, e the player buffers 3-5 of them). baixa-Latency HLS (LL-HLS), introduced by Apple in 2019, reduces this to 2-5 seconds através de two key mechanisms: partial segments (the server publishes incomplete segments incrementally as they are produced) e preload hints (the playlist tells the player to start fetching the next partial segment antes it exists). LL-HLS requires HLS version 9, fMP4 segments, e server support para HTTP/2 push ou chunked transfer. Most major CDNs now support it.

Standard HLS has 15-30 seconds von live latency because segments must be fully produced vor they can be served (typically 4-8 second segments, und the player buffers 3-5 von them). niedrig-Latency HLS (LL-HLS), introduced by Apple in 2019, reduces this to 2-5 seconds durch two key mechanisms: partial segments (the server publishes incomplete segments incrementally as they are produced) und preload hints (the playlist tells the player to start fetching the next partial segment vor it exists). LL-HLS requires HLS version 9, fMP4 segments, und server support für HTTP/2 push oder chunked transfer. Most major CDNs now support it.

Standard HLS has 15-30 seconds de live latency because segments must be fully produced antes they can be served (typically 4-8 second segments, y the player buffers 3-5 de them). baja-Latency HLS (LL-HLS), introduced by Apple in 2019, reduces this to 2-5 seconds a través de two key mechanisms: partial segments (the server publishes incomplete segments incrementally as they are produced) y preload hints (the playlist tells the player to start fetching the next partial segment antes it exists). LL-HLS requires HLS version 9, fMP4 segments, y server support para HTTP/2 push o chunked transfer. Most major CDNs now support it.

Yes if you only change the container: <code>ffmpeg -i in.mkv -c copy out.mp4</code>. This remuxes the stream without re-encoding, takes seconds even for hours of footage. Limitations: codec must be supported by the target container (e.g. you cannot put H.264 in WebM, only VP8/VP9/AV1). To shrink size you must re-encode.

We use cookies and similar technologies to personalise content and ads, and to analyse traffic. Learn more about cookies.