Skip to the content.

⚙️ What is a Manifest File?

Definition:

A manifest file is a metadata file that lists all the video/audio chunks (segments) and their properties for adaptive streaming.

Analogy:


🔄 Role in Video Chunk Processing

  1. Video is encoded into multiple bitrates/resolutions (e.g., 1080p, 720p, 480p).

  2. Video is split into chunks/segments (usually 2–10 seconds each).

  3. Manifest file is generated:

    • Lists all available chunks per resolution/bitrate
    • Provides URLs for each chunk
    • Includes timing information, codecs, encryption info
  4. Client playback:

    • Downloads manifest first
    • Chooses the initial chunk to play
    • Dynamically switches quality/bitrate for next chunks based on network conditions

⚡ Types of Manifest Files

Protocol Manifest File Description
HLS (HTTP Live Streaming) .m3u8 Lists variant playlists for different bitrates & chunk URLs
MPEG-DASH .mpd (Media Presentation Description) Lists adaptation sets (video/audio) and segment URLs
Smooth Streaming (MS) .ism Lists chunks and bitrate options for Smooth Streaming
HDS (Adobe) .f4m Contains metadata about chunks and bitrates

1. HLS Manifest (.m3u8) Example

Master Playlist: (lists all qualities)

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=500000,RESOLUTION=640x360
low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=1280x720
mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1920x1080
high/index.m3u8

Variant Playlist: (lists video chunks)

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
chunk1.ts
#EXTINF:10,
chunk2.ts
#EXTINF:10,
chunk3.ts

2. MPEG-DASH Manifest (.mpd) Example

<MPD type="static" mediaPresentationDuration="PT30M">
  <Period>
    <AdaptationSet mimeType="video/mp4" codecs="avc1.4d401f">
      <Representation id="1080p" bandwidth="3000000" width="1920" height="1080">
        <SegmentList timescale="1">
          <SegmentURL media="chunk1.mp4"/>
          <SegmentURL media="chunk2.mp4"/>
        </SegmentList>
      </Representation>
      <Representation id="720p" bandwidth="1000000" width="1280" height="720">
        <SegmentList timescale="1">
          <SegmentURL media="chunk1.mp4"/>
          <SegmentURL media="chunk2.mp4"/>
        </SegmentList>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

🔧 Key Points About Manifest Files

  1. Lists all video/audio segments
  2. Contains multiple bitrates/resolutions for adaptive streaming
  3. Contains URLs or paths to each chunk
  4. Can include encryption/DRM info
  5. Enables client to make bitrate switching decisions

🧩 Why Manifest Files are Important


💡 Analogy: