Manifest File
A text file that describes the video stream structure: available quality levels (bitrates), segment URLs, timing information, and encryption details. The player fetches the manifest first, then requests segments based on its contents. HLS uses .m3u8 files; DASH uses .mpd files.
Full Explanation
The manifest file is the table of contents for a video stream. It is the very first thing a player fetches, and everything else follows from it. The manifest tells the player what quality levels are available, where to find the segments for each level, what codecs are used, and how to decrypt the content if it is encrypted. Without a valid manifest, the player cannot do anything.
There are two flavors. HLS uses .m3u8 playlists, which are simple text-based files with tags prefixed by #EXT. DASH uses .mpd files (Media Presentation Description), which are XML documents. Both follow a two-level hierarchy: a master (or multivariant) manifest lists the available renditions (720p at 3Mbps, 1080p at 6Mbps, etc.), and each rendition has its own media manifest listing the actual segment URLs with timing information.
For VOD content, manifests are static. They list every segment from start to finish and never change. Cache them aggressively with long TTLs (hours or days). For live streams, manifests are dynamic. They update every segment duration (typically every 2-6 seconds) as new segments are added and old ones slide off the DVR window. Live manifests need very short TTLs (1-2 seconds) or no-cache headers so players always get the latest version.
Here is a simple HLS master manifest:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
360p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2400000,RESOLUTION=1280x720
720p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6000000,RESOLUTION=1920x1080
1080p/playlist.m3u8
The player picks a rendition based on available bandwidth, fetches that media playlist, then starts downloading segments listed in it.
Examples
Frequently Asked Questions
A text file that describes the video stream structure: available quality levels (bitrates), segment URLs, timing information, and encryption details. The player fetches the manifest first, then requests segments based on its contents. HLS uses .m3u8 files; DASH uses .mpd files.