MPEG Video Stream ID in VOB Files

VOB (Video Object) files are container formats based on the MPEG-2 Program Stream specification, used primarily on DVD-Video media to multiplex digital video, digital audio, and subtitles into a single data flow. This article identifies the exact stream ID used to designate MPEG video packets inside a VOB container, explains how the packet header is structured, and outlines how demultiplexers distinguish video data from other elementary streams.

The MPEG Video Stream ID

In a VOB file, MPEG video packets are identified by the stream ID 0xE0.

MPEG-2 Program Stream specifications allocate the hexadecimal range 0xE0 through 0xEF for video streams, supporting up to 16 distinct video tracks. In standard DVD-Video VOB files, the primary video stream almost exclusively utilizes the first identifier in this range: 0xE0 (Video Stream 0).

Packet Header Structure

Every elementary stream packet within a VOB file is encapsulated as a Packetized Elementary Stream (PES). Demuxers identify video packets by reading the standard 4-byte start code at the beginning of each PES packet:

  1. Packet Start Code Prefix (3 bytes): 0x00 0x00 0x01
  2. Stream ID (1 byte): 0xE0

Combined, the full 32-bit start code for the primary MPEG-2 video stream is 0x000001E0. When a demultiplexer encounters this sequence, it parses the subsequent payload as MPEG video data (such as sequence headers, GOP headers, and picture slices), while utilizing the PES header's Presentation Time Stamps (PTS) and Decoding Time Stamps (DTS) to maintain video synchronization.

Distinguishing Video from Other Streams in a VOB

DVD VOB files multiplex multiple types of content together. Demultiplexers use stream IDs to separate these tracks:

Because non-MPEG audio and subtitles are routed through Private Stream 1 (0xBD), the 0xE0 identifier remains dedicated purely to the primary video elementary stream throughout standard DVD playback.