Merging Matroska S_VOBSUB

Goal:

Join 2 separate MKV files that are part of one movie.

Problem:

The MKV files contain S_VOBSUB streams that are zlib compressed. S_VOBSUB cannot be extracted with mkvextract, nor can be manipulated with VirtualDubMod or AVI-MUX Gui.

Tools Used:

  1. AVI-MUX Gui;
  2. Matroska Stream Editor;
  3. MKVMerge.

Assumption:

Let’s call the 1st MKV file A and the 2nd B

Step 1:

Remux A into a new MKV file, removing zlib compression for S_VOBSUB stream. Let’s call this new MKV file A_VOBSUBdecomp.
Repeat with B. The new MKV file is B_VOBSUBdecomp.

Step 2:

Remux A into another MKV file, this time removing S_VOBSUB stream completely. This new MKV file is A_noVOBSUB.
Repeat with B. This new file is B_noVOBSUB.

Step 3:

Join A_noVOBSUB and B_noVOBSUB together using AVI-MUX_GUI
This new file is AandB_noVOBSUB.

Step 4:

Load A_VOBSUBdecomp and B_VOBSUBdecomp into Matroska Stream Editor.
Append B_VOBSUBdecomp’s S_VOBSUB stream to A_VOBSUBdecomp’s. Time offset the appended S_VOBSUB stream if necessary.
Delete the rest of the streams.
Mux this single stream into a MKV file. Call this file AandB_VOBSUBonly.

Step 5:

Mux AandB_noVOBSUB with AandB_VOBSUBonly to produce final output file.

note: The reason why I didn’t try using Matroska Stream Editor to directly append and mux all the streams, and instead went through this longwinded process is because: 1. I’m not sure what sort of ‘side effects’ Matroska Stream Editor will produce; 2. I’ll not have to bother about time offsets except for the S_VOBSUB stream.

Subjects: Technology 技術

Tags: matroska