Why Binary Merging VOB Files Causes Timestamp Jumps
Merging DVD VOB (Video Object) files using simple binary
concatenation commands—such as cat on Unix-based systems or
copy /b on Windows—frequently leads to severe playback
issues, including erratic timestamp jumps, audio/video
desynchronization, and broken seek bars. While binary concatenation is
fast and appears to work on the surface, it ignores the internal
architecture of MPEG-2 Program Streams, the presence of DVD-specific
navigation packets, and the discontinuous nature of internal
presentation timestamps.
The Illusion of Simple Concatenation
Tools like copy /b or cat operate strictly
at the byte level. They take the raw binary payload of subsequent files
and append them to the end of the initial file. For completely uniform,
headerless data formats, this approach can work. However, VOB files are
not raw audio/video streams; they are specialized containers based on
the MPEG-2 Program Stream (MPEG-PS) specification, designed specifically
for DVD-Video media.
Non-Monotonic Presentation Time Stamps (PTS)
Within an MPEG-PS container, playback synchronization depends on embedded timing metadata:
- PTS (Presentation Time Stamp): Dictates when a specific decoded video frame or audio packet should be presented on screen.
- DTS (Decoding Time Stamp): Dictates when a compressed frame must be decoded by the hardware or software decoder.
- SCR (System Clock Reference): Synchronizes the player's internal master clock to the stream's timeline.
When a DVD title spans multiple 1 GB VOB files (such as
VTS_01_1.VOB, VTS_01_2.VOB), the internal
timestamps do not necessarily continue linearly across physical file
splits. In many authoring setups, timestamps reset to zero at the
beginning of a new cell, chapter, or file boundary.
When you use a binary copy, the end of the first file might have a PTS indicating 20 minutes (e.g., PTS = 108,000,000 at 90 kHz), while the start of the next file's payload suddenly drops back to zero or an arbitrary starting offset. Media players expect timestamps to increase monotonically (strictly progressing forward). Encountering an abrupt drop or jump causes the player's playback engine to stall, miscalculate the total duration, or lose synchronization between the audio and video tracks.
The Absence of DVD Navigation (IFO) Context
Standalone VOB files on a DVD were never intended to be parsed linearly without their companion files:
- NAV Packs (Navigation Packets): DVD VOBs contain embedded PCI (Presentation Control Information) and DSI (Data Search Information) packets. These packets handle angle changes, menu highlights, and fast-forward/rewind indexing.
- IFO Files: The
.IFOfiles contain the true playback instructions, mapping how cells and programs sequence together, how clock discontinuities must be handled, and which audio/subtitle streams correspond to which tracks.
When VOBs are merged via a binary copy, the player encounters internal NAV packs and padding streams that expect external guidance from an IFO file. Without this context, the decoder treats the newly joined data as a corrupted stream, leading to erratic timeline behavior during playback.
Audio and Video Packet Interleaving Mismatches
MPEG-2 Program Streams multiplex video, audio, and private data into discrete packets. At the end of a single VOB split, the stream may terminate mid-GOP (Group of Pictures) or with an incomplete audio frame, relying on the DVD player to clear buffers and align the subsequent cell. A binary merge blindly glues these incomplete buffers together, causing packet loss and buffer underflows/overflows in the decoder, which manifests as timeline skips and audio dropouts.
The Correct Method to Merge VOBs
To prevent timestamp jumps, VOB files must be remuxed rather than appended:
- Container Parsing: A dedicated multiplexer or media tool parses the underlying video (MPEG-2) and audio (AC-3, DTS, or LPCM) elementary streams.
- NAV Pack Stripping: DVD-specific navigation packs must be discarded, as they are invalid in modern containers like MP4 or MKV.
- Timestamp Normalization: The remuxing utility
recalculates the PTS, DTS, and SCR values, rewriting them so that each
packet increases linearly from
00:00:00to the true end of the timeline without gaps or resets.