Why Merging VOB Files Causes Audio Desync
Naively concatenating DVD VOB files using binary merge commands or basic file joiners frequently results in severe audio-video desynchronization. This issue arises because VOB (Video Object) files are not standalone media containers; they are arbitrary file segments governed by external DVD metadata. When combined without re-evaluating the underlying MPEG-2 Program Stream timestamps, codec frame alignments, and navigation instructions found in associated IFO files, media players fail to maintain proper timing between the video and audio tracks.
Arbitrary File Split Boundaries
On standard DVD-Video discs, the UDF/ISO 9660 file system limits
individual file sizes to roughly 1 GB. Because of this, authoring
software splits continuous MPEG-2 Program Streams into sequential chunks
(VTS_01_1.VOB, VTS_01_2.VOB, etc.) purely
based on byte count rather than logical audio or video frame boundaries.
A VOB file may terminate mid-packet, mid-frame, or between mismatched
audio and video intervals. A naive binary concatenation (such as the
cat command in Linux or copy /b in Windows)
treats these splits as linear file streams, introducing structural
stream corruption at every junction point.
Presentation Timestamp (PTS) Discontinuities
Digital media playback relies on Presentation Timestamps (PTS) and Decoding Timestamps (DTS) embedded within the packetized elementary stream (PES) headers to keep audio and video frames in sync. In DVD authoring:
- Timestamps across separate VOB files do not necessarily continue in a perfect, linear mathematical progression.
- Timestamps may reset back to zero, encounter sudden jumps, or contain non-monotonic gaps across segment boundaries.
- A media player reading a concatenated file often assumes a continuous, uniform timecode. When it encounters unexpected timestamp resets or gaps at the boundary of what used to be a separate VOB file, the audio decoder and video decoder react differently—one stream may pause or skip while the other continues, throwing the two out of sync for the remainder of the timeline.
Frame Length and Packet Misalignment
Video and audio frames operate on entirely different time spans:
- NTSC video frames occur roughly every 33.36 milliseconds; PAL frames occur every 40 milliseconds.
- AC-3 (Dolby Digital) audio frames typically cover 32 milliseconds of audio, while DTS or LPCM audio formats utilize completely different frame durations.
Because audio and video frame durations do not share identical time lengths, an audio frame rarely finishes at the precise millisecond a video frame or VOB byte limit ends. At the split boundary, there is almost always a fractional trailing audio or video packet. When naively joined, these unaligned fractional frames accumulate as milliseconds of drift at each boundary. Over a full-length film spanning four or five VOB files, this cumulative drift produces several seconds of noticeable desynchronization.
Missing IFO Metadata and Audio Delay Values
The true structural intelligence of a DVD resides in the
.IFO files, not the .VOB files. The IFO file
contains the Program Chain (PGC) information, cell transition flags, and
precise audio delay values:
- Many DVDs incorporate an explicit audio delay (often positive or negative offsets of tens to hundreds of milliseconds) applied to specific chapters or cells to ensure synchronization.
- The IFO dictates whether a boundary transition is "seamless" or requires a decoder buffer flush.
- Naive concatenation strips away all IFO instructions, leaving the playback software blind to intended audio delay offsets and cell start positions.
Resolving the Desynchronization
To merge sequential VOB files without desynchronization, the files must be parsed by tools that decode and rebuild the container structure or extract the elementary streams based on the DVD's IFO table. Modern remuxing tools—such as MakeMKV, HandBrake, or FFmpeg using proper stream mapping rather than protocol-level concatenation—read the container timestamps, apply the designated audio delay offsets, pad or drop fractional audio frames at cell cuts, and produce a unified file with linear, continuous timecodes.