How Modern Rippers Merge Split VOB Files
DVDs store video in split VOB (Video Object) files capped at 1GB due to legacy filesystem constraints, often cutting movie sequences right down the middle of a frame or audio packet. Modern DVD ripping software does not simply append these files together sequentially; instead, it parses DVD navigation data, resolves broken elementary data streams at split boundaries, normalizes presentation timestamps, and remuxes the data into a single continuous container like MKV or MP4. This article explains the technical pipeline modern rippers use to convert segmented VOB files into one seamless video track without loss of audio/video synchronization.
Parsing DVD Structure via IFO Files
A standard DVD directory (VIDEO_TS) breaks a single film
into multiple files named VTS_01_1.VOB,
VTS_01_2.VOB, and so forth. Crucially, modern rippers do
not rely on file names or filesystem order to assemble the stream.
Instead, rippers read the accompanying .IFO
(Information) files, such as VTS_01_0.IFO. The IFO file
contains the playback control program chains (PGCs), cell IDs, and
chapter pointers. It tells the ripper:
- The exact playback sequence of audio, video, and subtitle streams.
- Which audio tracks correspond to specific languages and codecs (e.g., AC-3, DTS, LPCM).
- Which VOB sectors contain actual feature film content, allowing the ripper to ignore duplicate angles, unreferenced trailers, or studio intro loops.
Packet Demultiplexing Across File Boundaries
VOB files are formatted as MPEG-2 Program Streams (MPEG-PS). Within an MPEG-PS container, video, audio, and subtitle data are divided into 2048-byte packets, each tagged with a stream ID.
Because the 1GB file boundary split is strictly physical rather than
logical, a single Packetized Elementary Stream (PES) packet is
frequently sliced in half across two adjacent files (for example, the
end of VTS_01_1.VOB and the beginning of
VTS_01_2.VOB). Modern rippers maintain a continuous
low-level stream buffer:
- They treat the entire VOB set mapped by the IFO as a single continuous byte stream.
- They feed data into a demultiplexer (demuxer) that assembles fragmented PES headers and payloads across the 1GB boundary.
- The demuxer separates the raw elementary streams—MPEG-2 video frames, AC-3/DTS audio frames, and RLE subtitle bitmaps—into their own distinct buffers.
Timestamp Correction and Audio Sync Preservation
The most complex hurdle in joining split VOBs is timestamp management. VOB packs embed Presentation Time Stamps (PTS) and Decoding Time Stamps (DTS) that dictate when a frame should be decoded and rendered.
On physical DVDs, these timestamps frequently suffer from:
- Discontinuities: Clock resets at chapter marks, layer breaks, or commercial inserts.
- Non-Zero Start Offsets: Audio tracks often start a few milliseconds before or after the video stream.
If files were concatenated naively via raw binary joining (such as using a terminal copy command), the media player would lose synchronization as soon as a timestamp discontinuity or layer break occurred.
Modern rippers detect these time gaps or overlaps. When parsing the
elementary streams, the software rebuilds a unified, monotonically
increasing timeline starting precisely at 00:00:00.000. If
an audio stream drops or pauses across a layer change, the ripper
inserts silent frames or adjusts the audio delay tags relative to the
video PTS to maintain lip-sync.
Remuxing to a Unified Container
Once the elementary video, audio, and subtitle streams are parsed, validated, and retimed, the ripper feeds them into a modern container multiplexer (such as an MKV or MP4 muxer).
During a "lossless" rip or passthrough mode (such as MakeMKV), no re-encoding occurs:
- The raw MPEG-2 video frames are wrapped directly into native container packets.
- The original Dolby Digital (AC-3) or DTS bitstreams are copied bit-for-bit.
- VobSub graphic subtitles are extracted along with their original timing codes and index palettes.
If the ripper is set to compress the video (such as HandBrake converting to H.264 or AV1), the unified elementary stream is passed directly to the video decoder and encoder pipeline, ensuring the encoder treats the multi-file source as one continuous, uninterrupted video clip.