How VOB Containers Handle Multiple Language Tracks
The VOB (Video Object) container handles multiple simultaneous language tracks by utilizing the MPEG-2 Program Stream architecture, where multiple discrete audio streams are broken down into packets and interleaved alongside the video data. Rather than mixing sounds together, the container maintains up to eight distinct, parallel audio streams that run concurrently with the video. DVD players and media software read metadata mapped to these streams, allowing users to switch seamlessly between different spoken languages during playback without interrupting the video stream.
MPEG-2 Program Stream Architecture
At its core, a VOB file is a specialized implementation of the MPEG-2 Program Stream (PS). In an MPEG-2 PS, continuous media feeds—such as video, audio, and subtitles—are encoded separately into Packetized Elementary Streams (PES).
These PES packets are chopped into small, fixed-size chunks (typically 2,048 bytes to match standard DVD sectors) and multiplexed, or interleaved, sequentially on the timeline. Because the packets contain presentation time stamps (PTS), the player can align audio and video buffers precisely, even when reading data for multiple audio channels stored on the same physical disc sector.
Packet Identification and Stream IDs
To differentiate between multiple language tracks within the same file, the VOB container uses specific header identifiers:
- MPEG Audio Tracks: Standard MPEG-1 or MPEG-2 audio
tracks are identified directly by stream IDs ranging from
0xC0to0xDF. - Private Streams (AC-3, DTS, LPCM): DVD-Video
frequently uses AC-3 (Dolby Digital), DTS, or uncompressed LPCM audio.
These formats are wrapped inside a specific identifier known as "Private
Stream 1" (stream ID
0xBD). - Sub-stream IDs: Because multiple tracks can share
Private Stream 1, an additional 1-byte sub-stream ID is placed at the
start of the payload:
0x80to0x87are reserved for up to eight AC-3 audio tracks.0x88to0x8Fare reserved for up to eight DTS audio tracks.0xA0to0xA7are reserved for up to eight LPCM audio tracks.
By reading these headers, a demultiplexer instantly knows which language or format a specific packet belongs to.
The Role of IFO Metadata Files
A standard VOB file contains the audio streams and their numerical IDs, but it does not inherently store language descriptors (such as "English," "French," or "Director's Commentary").
This descriptive metadata is stored externally in accompanying
.IFO (Information) files:
- The
.IFOfile maps the VOB's sub-stream ID (e.g.,0x80) to an ISO 639-1 language code (e.g.,en). - When playback begins, the media player reads the
.IFOfile to populate language selection menus and configure track labels. - If a VOB file is played standalone without its
.IFOfile, players usually label the tracks generically (e.g., "Audio Track 1," "Audio Track 2") based strictly on the order of the stream IDs.
Real-Time Demultiplexing and Playback
During playback, the decoding hardware or software reads the combined VOB stream from the storage medium. The demultiplexer filters the incoming interleaved packets based on the user's active language selection.
Packets matching the chosen audio stream ID are routed directly to the audio decoder's buffer, while packets belonging to non-selected languages are discarded immediately before processing. Because all audio streams share the same master clock reference (SCR), switching languages simply requires changing the demultiplexer filter to a different stream ID, enabling instant audio changes without disrupting video playback.