Author Topic: mkv header compression easy fixes using batch files  (Read 80386 times)

August 09, 2010, 04:25:59 AM
Read 80386 times

adrian

  • Newbie

  • Offline
  • *

  • 10
did this for myself since i am a really lazy person and decided to share it with others. i wanted an easy way to quickly fix multiple mkv files so they would work on my wdtv. these two solutions work on every mkv in a folder and subfolders. most of the work is not mine, i had problems getting the original batch files i found to work so i just fixed, modified, cut and pasted into new ones which worked for me.

firstly from the matroska website http://www.matroska.org/downloads/mkclean.html is a tool called mkclean. in this download zip is another tool mkWDclean.exe
make a folder and put mkWDclean.exe in it then create a batch file and paste and copy the code below into it.
Code: [Select]
FOR /F "delims=*" %%A IN ('dir /b /s *.mkv') DO CALL:WDTVFIX "%%A"
START "" logging.txt
GOTO :eof
:WDTVFIX
mkWDclean --optimize %~dpnx1 %~dpn1_fixed.mkv
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> logging.txt
goto :eof)
ECHO OFF
REM remove the REM's below to delete original files
REM if exist "%~dpn1_fixed.mkv" (
REM del "%~dpnx1")
ECHO Processing of %~nx1 successful! >> logging.txt
goto :eof

save the batch file and double click to run it. (if you should want to stop it part way through the keyboard shortcut is Ctl-C)

what it does is for every file *.mkv it finds it runs it through mkWDclean and saves the output as *_fixed.mkv
it does not delete the original files unless you remove the REM from the bottom so it reads
Code: [Select]
FOR /F "delims=*" %%A IN ('dir /b /s *.mkv') DO CALL:WDTVFIX "%%A"
START "" logging.txt
GOTO :eof
:WDTVFIX
mkWDclean --optimize %~dpnx1 %~dpn1_fixed.mkv
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> logging.txt
goto :eof)
ECHO OFF
REM remove the REM's below to delete original files
if exist "%~dpn1_fixed.mkv" (
del "%~dpnx1"
ECHO Processing of %~nx1 successful! >> logging.txt
goto :eof

an alternate method already used by others on this site uses mkvmerge. i just created a batch file to automate it.
you need the latest mkvtoolnix from their website http://www.bunkus.org/videotools/mkvtoolnix/downloads.html
there are two batch files depending upon whether you use the installer or the standalone 7zip archive

installed version
create a folder and make a batch file containing the code below. put your mkv files in the folder and run the batch file to fix them.

Code: [Select]
REM Whipped up by TEKNO to fix MKV header compression issues on Standalone media players!
REM fixMKV version 1.2
REM Requires MKVToolnix v4.1.1 INSTALLED (it auto detects where)
@ECHO OFF
cd "%~dp0"
SET KEY="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\mmg.exe"
FOR /F "tokens=2*" %%A IN ('REG QUERY %KEY%') DO SET MKVTOOLPATH=%%B
ECHO MKVToolnix found at %MKVTOOLPATH% > logging.txt
FOR /F "delims=*" %%A IN ('dir /b /s *.MKV') do CALL :MKVFIXMUX "%%A" "%MKVTOOLPATH%"
START "" logging.txt
GOTO :eof
:MKVFIXMUX
"mkvmerge.exe" -o "%~dpn1_fix.mkv" --engage keep_bitstream_ar_info -A -S --compression -1:none "%~dpnx1" -D -S --compression -1:none "%~dpnx1" -A -D --compression -1:none "%~dpnx1"
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> logging.txt
goto :eof)
REM if exist "%~dpn1_fix.mkv" (
REM del "%~dpnx1")
ECHO Processing of %~nx1 successful! >> logging.txt
goto :eof

in the original version the link to the mkvmerge program was referenced by "%~dp2mkvmerge.exe" which did not work on my system(s) but did when i changed it to "mkvmerge.exe" (when you install mkvtoolnix it creates a PATH reference to its install folder.

standalone version
create a folder and extract mkvtoolnix-unicode-4.2.0.7z into it so it is in a sub-folder called mkvtoolnix. the archive uses 7zip http://www.7-zip.org/download.html.
create a batch file in the folder and paste the code below into it. launch the batch file to fix all mkv files in the directory.

Code: [Select]
REM Whipped up by TEKNO to fix MKV header compression issues on Standalone media players!
REM MKVfix version 1.2
REM For use with the ZIPPED version of MKVToolnix v4.1.1 or greater
REM Change the "SET MKVTOOLPATH =" to the DIRECTORY that you have unzipped MKVToolnix too!
@ECHO OFF
cd "%~dp0"
SET MKVTOOLPATH=%~dp0mkvtoolnix
ECHO MKVToolnix found at %MKVTOOLPATH% > logging.txt
FOR /F "delims=*" %%A IN ('dir /b /s *.MKV') do CALL :MKVFIXMUX "%%A" "%MKVTOOLPATH%"
START "" logging.txt
GOTO :eof
:MKVFIXMUX
%MKVTOOLPATH%\mkvmerge.exe -o "%~dpn1_fix.mkv" --engage keep_bitstream_ar_info -A -S --compression -1:none "%~dpnx1" -D -S --compression -1:none "%~dpnx1" -A -D --compression -1:none "%~dpnx1"
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> logging.txt
goto :eof)
REM if exist "%~dpn1_fix.mkv" (
REM del "%~dpnx1")
ECHO Processing of %~nx1 successful! >> logging.txt
goto :eof

again to get it to delete the originals delete the "REM " from the two lines so they are
Code: [Select]
if exist "%~dpn1_fix.mkv" (
del "%~dpnx1")
i had two problems with the original version of this firstly the SET MKVTOOLPATH= was SET MKVTOOLPATH = , it didn't like the spaces. and secondly it again failed to reference mkvmerge successfully.
hopefully this will be of use to someone until wd gets round to adding support for header compression to their firware; but i will not be holding my breath.

in terms of speed the mkvmerge method is faster.
« Last Edit: August 09, 2010, 04:31:01 AM by adrian »

August 09, 2010, 07:24:48 PM
Reply #1

Whoheart

  • Hero Member

  • Offline
  • *****

  • 756

That's great Adrian, thanks for going through all the trouble! :)
If you think there is something wrong with your WD device contact them and then act upon that: Either wait or move on - don't whine here - this is not WD's board. If you have a problem, start a thread and ask - perhaps someone knows the answer.

August 10, 2010, 02:27:42 AM
Reply #2

RavRob

  • DeSpammer
  • Hero Member

  • Offline
  • ****

  • 1728
Windows 7 Ultimate with SP1
WDTV Live
1.02.21 WDLXTV 0.5.1.4 (Beta)
Linksys - WUSB600N USB Adapter
DLink - Dir-655 Router
Atheros - AR8131 PCI-E Gigabit Ethernet Controller (NDIS 6.20)
XBMC - The Future of Television

August 23, 2010, 07:53:34 AM
Reply #3

s1l3nc0r

  • Newbie

  • Offline
  • *

  • 3
Thanks a lot for this quick fix.

Do you think it would be possible to automate this process ?

So every time a new mkv file appears in a directory, it gets passed through this batch script.


August 23, 2010, 02:43:42 PM
Reply #4

adrian

  • Newbie

  • Offline
  • *

  • 10
i am sure it is possible to use a wildcard match to omit those which have already been processed, but one of the issues i had early on was it went through the folder alphabetically and fixed those files which had already been fixed. e.g. it fixed "video1.mkv" to "video1-fixed.mkv" and then fixed "video1-fixed.mkv" to "video1-fixed-fixed.mkv"

at this point since it only has to deal with a small subset of mkv with header compression enabled i prefer a level of human intelligence rather than the blind obedience of computers.
i'd rather know that every mkv i put in a folder will be fixed when i run the batch and get a coffee, and can then be moved into the various subfolders i want, rather than hope a rogue named mkv does not end up in the folder and gets fixed repeatedly filling up hdd space.

there is no reason the batch file cannot be scheduled to run at set intervals but again you run into the literal mindedness of computers which will faithfully gigo (garbage in garbage out) you into a mess.

alternatively there are undoubtedly people out there with much better batch skills than me who could figure out a way to omit those mkv which have already been processed; i am not one of them. i figured out just enough to get it to work until wd update their firmware. already i am seeing some of those groups which had header compressione enabled now disabling it so i am satisfied with what i have.  :-\

August 25, 2010, 03:00:06 PM
Reply #5

allstar1

  • Newbie

  • Offline
  • *

  • 3
Thanks a lot for this,very helpful.
 
Edit : I tried the batch file with mkWdclean and its not working, a cmd window shows up and runs quickly and then nothing happens.
« Last Edit: August 25, 2010, 03:40:53 PM by allstar1 »

August 26, 2010, 03:13:57 AM
Reply #6

adrian

  • Newbie

  • Offline
  • *

  • 10
most obvious cause of that would be that the batch file did not find mkwdclean.exe in the same folder as the batch file. if it still does not work i suggest the mkvmerge standalone version batch file, it's the one i found fastest.

August 26, 2010, 04:57:45 PM
Reply #7

allstar1

  • Newbie

  • Offline
  • *

  • 3
well the mkwdclean.exe was in the same directory so idk what went wrong.Anyways,took your advice and switched to the standalone mkvmerge option and it works (it's also faster like you said),but now the problem is it wont delete the old file even though i removed the two "rems" from the end of the .bat file.Still,it's only a minor problem, thanks and good work Adrian ;D.

August 28, 2010, 05:28:00 AM
Reply #8

millsjw

  • Newbie

  • Offline
  • *

  • 3
HERE is a way to fix the batch.

Add this line at the top:

md fixedMKV         (note: this will fail if dir is there, but no harm)


Now, add the path to the begining of the output file line 

mkWDclean --optimize %~dpnx1 fixedMKV\%~dpn1_fixed.mkv

That will put the output file in a sub directory and the batch will not see it.

Well, my mkWDclean stops at 85% on the 2nd pass for any file, plain or with the --optimize  option.


August 30, 2010, 12:14:59 AM
Reply #9

adrian

  • Newbie

  • Offline
  • *

  • 10
i fixed the issue of the batch fixing files which had already been fixed during a single run of the batch file using the line
FOR /F "delims=*" %%A IN ('dir /b /s *.mkv') DO CALL:WDTVFIX "%%A"
except that the /s switch causes it to look in subdirectories too. although that switch can be easily removed
the problem is that there is no way for the batch file to tell which files have already been processed in a previous run without using either some sort of wildcard matching (which i would not trust to always work) or possibly check if the fixed version already exists, in which case you would need to keep the original as well as the fixed, twice as much hdd space.

i suppose combining the removal of the /s switch with saving to a subdirectory and deleting the original should work; but not if you sort files into directories and want to do an inplace fix and replace. at some point human intervention is required.

maybe a batch file guru can figure out a way to do all this automatically.

August 31, 2010, 01:22:07 AM
Reply #10

s1l3nc0r

  • Newbie

  • Offline
  • *

  • 3
I was looking for a way to enhance the script a bit further.

I modified it the following way:
It looks in current directory and subdirectories for all mkv files.
It then creates a folder called FixedMKV in the root of the drive the file is located in.
It then removes header compression creating a file including the full directory path and filename in the FixedMKV-folder.
After successfull creation it removes the original mkv file.
The logging.txt file will be created in the FixedMKV-folder.

I created the scipt this way to retain the directory structure I set up for my tv series (TV\Series Name\Season Number\Series Name - S..E...mkv.

HINT: If you have the mkvtoolnix installed, you can put Fixmkv.cmd on the desktop and you can drag and drop files on it, from wherever you like, works exactly the same.

Quote
REM Whipped up by TEKNO to fix MKV header compression issues on Standalone media players!
REM Enhanced by s1l3nc0r to assure files will only be ran once, containing directory structure
REM fixMKV version 1.3
REM Requires MKVToolnix v4.1.1 (or later) INSTALLED (it auto detects where)
@ECHO OFF
%~d1
CD\
MD FixedMKV
CD "%~p1"
SET KEY="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\mmg.exe"
FOR /F "tokens=2*" %%A IN ('REG QUERY %KEY%') DO SET MKVTOOLPATH=%%B
ECHO MKVToolnix found at %MKVTOOLPATH% > "%~d1\FixedMKV\logging.txt"
FOR /F "delims=*" %%A IN ('dir /b /s *.MKV') do CALL :MKVFIXMUX "%%A" "%MKVTOOLPATH%"
START "" "%~d1\FixedMKV\logging.txt"
GOTO :eof
:MKVFIXMUX
"%~dp2mkvmerge.exe" -o "%~d1\FixedMKV\%~pn1.MKV" --engage keep_bitstream_ar_info -A -S --compression -1:none "%~dpnx1" -D -S --compression -1:none "%~dpnx1" -A -D --compression -1:none "%~dpnx1"
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> "%~d1\FixedMKV\logging.txt"
goto :eof)
if exist "%~d1\FixedMKV\%~pn1.MKV" (
del "%~dpnx1"
)
ECHO Processing of %~nx1 successful! >> "%~d1\FixedMKV\logging.txt"
goto :eof

Still looking for some way to automate this, like as soon as a file appears in the directory that is monitored, it will automatically be ran through this script.

Enjoy ...

August 31, 2010, 04:24:16 PM
Reply #11

adrian

  • Newbie

  • Offline
  • *

  • 10
i think that this is about as good as it is going to get without running the risk of a video getting repeatedly fixed.
i will set it up so the folder with Fixmkv.cmd is a [drop] folder which just has the folder structures in it and create a new root folder say [video720p] and change the batch to reflect that. then i just have to navigate to the [video720p] folder for all my tv shows.

i will probably also set it up to run from a standalone version of mkvmerge as i have the popcorn audioconverter software installed (for a friend with a gen1 wdtv). i just checked and during testing i upgraded to mkvtoolnix 4.20 and just now when i used audioconverter to downsample dts to ac3 it also performed header compression on all streams. to the point that when i tried to play the video on my wdtv live it freezes and then will not play any other videos until i unplug the power lead.

great  ::) if you have a gen1 wdtv you need both versions of mkvtoolnix, the before and after header compression was enabled builds.
uninstalled ver 4.2.0 and reinstalled 3.2.0.

here is a link to a bit of freeware that might do what you are after in automating conversions
http://leelusoft.blogspot.com/2010/07/watch-4-folder-22.html
it monitors a folder and subfolder and upon detecting an event can run a batch file

modified the code from s1l3nc0r in a few ways (thanks s1l3nc0r for your work)
most importantly it still looks in current directory and subdirectories for all mkv files.
changed a few of the variable names (i always had problems with %~d1 so changed it to %~d0)
set it up so it runs from the standalone 7zip version of mkvtoolnix so you can have a pre header compression version installed but still fix those which are bad.
used a lot more SET commands to set up variables that could be called in multiple places (e.g. location of logging.txt) so they are defined once but called from that definition whenever needed (avoids mistakes when editing.)
and now the biggies
with s1l3nc0r's version it used the whole path of the original file location to create the save path of the fixed files
e.g. D:\video\drop\TV\Series Name\Season Number\EpisodeName.mkv
would be saved into D:\FixedMKV\video\drop\TV\Series Name\Season Number\EpisodeName_fix.mkv
after some head sweat figured out a way around this so it would be saved in the equivalent of
D:\FixedMKV\TV\Series Name\Season Number\EpisodeName_fix.mkv
finally modified the logging so it records the date and time each time it is run. previous records are not erased and only opens the file if there is an error. this is primarily so it can be automated with "watch 4 folder"

to understand the code it helps to have some idea of the directory structures i envisioned.
the drive letter is never explicitly referenced so does not need to be changed anywhere.
in the root of a drive is a folder called [video], this is shared so it can be accessed as a network share by the wdtv live.
in this folder are two more folders [drop] and [video720p]
in the [drop] folder is the extracted 7zip archive of mkvtoolnix in its [mkvtoolnix] folder
also in the [drop] folder is the watch 4 folder program w4f22.exe and a batch file containing the code below. it needs to be saved with the extention *.bat as that is what w4f22 requires.
this version does delete the original if there is no error from the running of mkvmerge

Code: [Select]
REM Whipped up by TEKNO to fix MKV header compression issues on Standalone media players!
REM Enhanced by s1l3nc0r to assure files will only be ran once, containing directory structure
REM Enhanced by adrian to work as standalone with 7zip mkvtoolnix and a more aesthetic directory structure
REM can be automated using freeware Leelu Soft Watch 4 Folder 2.2
REM For use with the ZIPPED version of MKVToolnix v4.1.1 or greater
REM Change the "SET MKVTOOLPATH =" to the DIRECTORY that you have unzipped MKVToolnix too!
REM MKVfix version 1.3
@ECHO OFF
%~d0
cd\
md \video\video720p
cd "%~p0"
SET MKVTOOLPATH=%~d0\video\drop\mkvtoolnix
SET LOGGINGPATH=%~d0\video\video720p
ECHO. >> "%LOGGINGPATH%\logging.txt"
ECHO This run started %DATE% %TIME% >> "%LOGGINGPATH%\logging.txt"
ECHO MKVToolnix found at %MKVTOOLPATH% >> "%LOGGINGPATH%\logging.txt"
ECHO output base path is %LOGGINGPATH%
@ECHO OFF
FOR /F "delims=*" %%A IN ('dir /b /s *.MKV') do CALL :MKVFIXMUX "%%A" "%MKVTOOLPATH%"
GOTO :eof
:MKVFIXMUX
SET OUTPUTPATH1=%~dp1
SET OUTPUTPATH2=%OUTPUTPATH1:drop=video720p%
%MKVTOOLPATH%\mkvmerge.exe -o "%OUTPUTPATH2%\%~n1_fix.mkv" --engage keep_bitstream_ar_info -A -S --compression -1:none "%~dpnx1" -D -S --compression -1:none "%~dpnx1" -A -D --compression -1:none "%~dpnx1"
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> "%LOGGINGPATH%\logging.txt"
START "" "%LOGGINGPATH%\logging.txt"
goto :eof)
if exist "%OUTPUTPATH2%\%~n1_fix.mkv" (
del "%~dpnx1")
ECHO Processing of %~nx1 successful! >> "%LOGGINGPATH%\logging.txt"
goto :eof

variables you may want to modify to suit your setup
md \video\video720p
this is for the location of the logging.txt file as otherwise if will fail to be created the first time it is run.
SET MKVTOOLPATH=%~d0\video\drop\mkvtoolnix
the location of the mkvtoolnix folder containing mkvmerge.exe. %~d0 is a batch parameter call which returns the drive letter
SET LOGGINGPATH=%~d0\video\video720p
the location the logging file is stored. this must match the location of the folder created earlier using the md command.
SET OUTPUTPATH1=%~dp1
SET OUTPUTPATH2=%OUTPUTPATH1:drop=video720p%
the clever bit, %dp1 is the reference string for the drive and path to the current mkv file being processed
the variable OUTPUTPATH2 is the drive and path but in this string it replaces the substring {drop} with the substring {video720p} so
D:\video\drop\TV\Series Name\Season Number
becomes
D:\video\video720p\TV\Series Name\Season Number\

so you have the folders created and shared with this batch file in it and the w4f22.exe program too.
launch the w4f22.exe
select the [drop] folder, tick the box to Watch Sub Folders
tick the box in {Select The Events to Monitor} window for the first item {File Create}
select the {Actions on Events} to execute a program or a batch file. navigate to this batch file.
click on the save button to save a configuration file as it does not save settings between uses (save into {drop} folder for convenience)
click on the {Start Monitoring} button and then the Tray button to minimize it to the system tray.

now to test it.
create a folder, or set of subfolders.
copy a video into this subfolder and within moments of the video being finished writing to drive the batch file will run fixing it into the other file heirarchy and deleting the original.

there is only one caveat, and i don't see any way to avoid it yet
you can only really copy one video at a time. otherwise the batch file will be started for the first video whilst the second video is transferring and you'll get overlapping disk access and potentially the batch trying to fix a second video which hasn't completed transferring yet.
the workaround is easy, just stop w4f22.exe from monitoring whilst you are transferring multiple files, then manually start the batch file.

addendum. when first trying to configure w4f22.exe it would freeze on the folder i wanted to select, just that folder and no others. through trial and error i found out it was a massive zip file (122mb), i think the issue was that it is a special backup that contains 38,000 files in 26,000 folders. once i moved it to another place i was fine.

September 01, 2010, 08:13:50 AM
Reply #12

s1l3nc0r

  • Newbie

  • Offline
  • *

  • 3
Would it be possible for you to modify the script a bit so it will acept spaces in the directory and file names ?

September 01, 2010, 02:24:20 PM
Reply #13

adrian

  • Newbie

  • Offline
  • *

  • 10
thought the script didn't care about spaces in directory and filenames and i was nearly right. turns out the md command right at the beginning does care, which would generate errors for the logging.txt file creation. simply putting the md command inside quotation marks fixes that i.e.
md "\video\video 720p"

Code: [Select]
REM Whipped up by TEKNO to fix MKV header compression issues on Standalone media players!
REM Enhanced by s1l3nc0r to assure files will only be ran once, containing directory structure
REM Enhanced by adrian to work as standalone with 7zip mkvtoolnix and a more aesthetic directory structure
REM MKVfix version 1.4
REM For use with the ZIPPED version of MKVToolnix v4.1.1 or greater
REM Change the "SET MKVTOOLPATH =" to the DIRECTORY that you have unzipped MKVToolnix too!
@ECHO OFF
%~d0
cd\
md "\video\video 720p"
cd "%~p0"
SET MKVTOOLPATH=%~d0\video\drop\mkvtoolnix
SET LOGGINGPATH=%~d0\video\video 720p
ECHO. >> "%LOGGINGPATH%\logging.txt"
ECHO This run started %DATE% %TIME% >> "%LOGGINGPATH%\logging.txt"
ECHO MKVToolnix found at %MKVTOOLPATH% >> "%LOGGINGPATH%\logging.txt"
ECHO output base path is %LOGGINGPATH%
@ECHO OFF
FOR /F "delims=*" %%A IN ('dir /b /s *.MKV') do CALL :MKVFIXMUX "%%A" "%MKVTOOLPATH%"
GOTO :eof
:MKVFIXMUX
SET OUTPUTPATH1=%~dp1
SET OUTPUTPATH2=%OUTPUTPATH1:drop=video 720p%
%MKVTOOLPATH%\mkvmerge.exe -o "%OUTPUTPATH2%\%~n1_fix.mkv" --engage keep_bitstream_ar_info -A -S --compression -1:none "%~dpnx1" -D -S --compression -1:none "%~dpnx1" -A -D --compression -1:none "%~dpnx1"
if not errorlevel 0 (
ECHO Failed on %~nx1 remux! >> "%LOGGINGPATH%\logging.txt"
START "" "%LOGGINGPATH%\logging.txt"
goto :eof)
if exist "%OUTPUTPATH2%\%~n1_fix.mkv" (
del "%~dpnx1")
ECHO Processing of %~nx1 successful! >> "%LOGGINGPATH%\logging.txt"
goto :eof

if you look at the code you'll see that other than the change i made to the md command the rest is just cosmetic, changed the folder [video720p] to [video 720p] for illustrative purposes
tested it on three videos all in directory paths with spaces in them and two of the videos had spaces in the file names. after copying the first two i set watch 4 folder monitoring with this batch file and then copied the third file across. it detected the file create, ran the batch file, and all three videos were fixed into the [video\video 720p\] heirarchy and the original deleted. all in the time it took me to get another coffee.

one note when modifying a line like
SET LOGGINGPATH=%~d0\video\video 720p
don't put the variable within quotation marks so it reads
SET LOGGINGPATH="%~d0\video\video 720p"
otherwise when the variable LOGGINPATH is called the substituted string will include the quotation marks e.g.
"D:\video\video 720p"\logging.txt
which will obviously not work.

September 26, 2010, 04:21:28 AM
Reply #14

ChumpusRex

  • Newbie

  • Offline
  • *

  • 9
Just an update here - But I've put together a small GUI for automating the remuxing process.

Just click on a directory - it scans it, identifies which files have header compression, and then remuxes them in the background (without having multiple console windows popping up).

It worked fine for me. Hopefully, some people will find it simpler than a batch file. As it really is a 2-click process.

It requires:
.NET framework v3.5 or v 4 (should be automatically installed by Windows update on XP and higher)
MKVToolNix v4.3.0 or newer http://www.bunkus.org/videotools/mkvtoolnix/win32/mkvtoolnix-unicode-4.3.0-setup.exe
MKClean v0.5.7 or newer https://sourceforge.net/projects/matroska/files/mkclean/mkclean-win32.v0.6.0.zip/download

Just pop the MKWDClean.exe file in the same directory as MKVFix.exe. If you don't, MKVFix will ask you where to find it.

You can download the GUI app from: www.chumpusrex.com/junk/MKVFix.exe

If you are worried about downloading exe files and would prefer to compile it yourself - then the source package is available from: www.chumpusrex.com/junk/MVVFix-src.rar
Please bear in mind that this was knocked up in a couple of hours and the code is seriously ugly. However, it seems to work with no glaring bugs.

Screenshots:
Pic1
Pic2
« Last Edit: September 26, 2010, 05:18:47 AM by ChumpusRex »