By Werner Ruotsalainen on Sun, 06/12/2011
UPDATE (08/19/2012): version 1.2 of iMkvExtract has been released in the meantime. It, unlike the previous (by me, updated) version, works just fine under Mountain Lion and doesn't need to be manually updated any more. That is, you no longer need to do what is explained in my 14-month-old article below.
Original version follows:
Here's a quick post on making iMkvExtract, the excellent and highly user-friendly MKV demuxer tool work with current MKV versions - an app everyone needs that wants to play particularly high-res MKV files on his or her iPad 1/2 or iPhone 4/ iPT4 and wants to do this together with the original subtitles exported from the originalMKV file.
(Note that I'll dedicate a huuuuge „bible” to iOS-based video playback in the next 2-3 weeks, explaining everything you'll ever need to know about video playback. I'll, then, explain in depth what iMkvExtract is, how it fits in the “big picture” and why you might want to use it. Now, I only publish this fix because I'm the first to fix the application, which will certainly delight a lot of people wanting to demux MKV files to, for example, assemble them into MP4 files that can already be played back by the later iOS devices natively and at full speed. Please see my list of the hardware acceleration-capable iOS video players HERE .)
If you've ever used iMkvExtract, you certainly know it no longer works with current MKV files as is explained at, say, HERE (see the user comment dated at 04 Apr 2010). Fortunately, I've managed to fix it!
If you'd like to do this yourself, you must do the following:
1. install MKVToolnix. You'll need to download MacPorts first from HERE ; as is explained HERE , you'll also need to install Xcode (a free download; the source is also explained on the linked page) to make it work. After the installation of MacPorts, you can already open a Terminal window and issue the sudo port install mkvtoolnix command (as is explained at the above-linked HERE page) – it'll install MKVToolnix. Note that it can be pretty time-consuming, particularly the „building boost” stage – don't panic!
2. after it has been installed (just like the old and outdated version of iMkvExtract), open two instances of Finder and navigate to /opt/local/bin/ in the first Finder window and /Applications/iMkvExtract.app/Contents/Resources in the second. (The first is the installed MKVToolnix, the second is iMkvExtract. Make sure you select „Show package contents” when trying to open iMkvExtract.app so that you can open it to see the files inside the bundle.)
3. overwrite both (old) „mkvextract” and „mkvmerge” files at /Applications/iMkvExtract.app/Contents/Resources with the (new) ones at /opt/local/bin/.
That's it! If everything is OK, everything will work just fine. I've tested it with several MKV files (e.g., the "official" X264 benchmark test MKV archive HERE ); all worked just fine.
BTW, in the same directory, you can see the French and the English localized project strings are stored. However, these files only contain the localized copyright message; that is, you, unfortunately, can't change the (rather annoying, if you don't speak the language) French messages to English ones here.
The importance of all this
This means you don't need to manually use mkvinfo to discover what's in a MKV file and, then, mkvextract to extract these tracks (see the excellent tutorial explaining all this HERE ). If you do want to extract anything from an MKV file (generally, subtitles), you can just use the much-much safer, faster etc., now-fixed iMkvExtract.
Note that if you don't want to keep any subtitles for iOS playback or the original video doesn't contain any of them, you won't need to use iMkvExtract at all. Then, ALL(!) you need to do to make your MKV files (even 1080p ones!) iOS (iPhone 4 / iPad 1 / iPad 2)-friendly is downloading AviDemux from HERE , running it and just saving your files as MP4 files, without touching the video stream and only transcoding the audio to stereo if it's 5.1 (6)-channel AC3 or DTS, which can't be played back by any iOS device with hardware acceleration. This means you will need to drop the source video file on it and leave the Video as „copy”. The audio, however, needs some work:
- instead of „Copy”, select AAC (Faac) in the drop-down list
- click Filter and select „Stereo” in the Mixer drop-down list
- you may also check in „Dynamic range compression”, particularly if you plan to watch the movie in a noisy environment
Returning to the main page, select „mp4” at the bottom left („Format”) as the output format.
After this, just encode the video (second icon at the top left).
After this, if you do need the subtitles extracted with the now-fixed iMkvExtract to be embedded in the mp4 file so that the built-in iOS Videos app (or any other app that supports both hardware acceleration and subtitles) can play it back, use the free(!) Subler (DOWNLOAD LINK). Note that the (pretty expensive) iSubtitle ( DOWNLOAD LINK) is NOT the only title that is able to embed subtitles in MP4 files: I've found Subler even faster(!). It saves the embedded subtitles really-really fast: you just press Cmd + S and when you lift your finger from the two buttons, the original video is already overwritten with the one with the embedded subtitle.
Using it is really simple:
1. File / Open; select the input video
2. File / Import / File... (or + in the top left corner): select the SRT subtitle file (e.g., the one exported by iMkvExtract); set its language after loading
3. you can freely add other sub files to the bunch (just don't forget to set its language in the drop-down list...)
4. when ready, just Cmd + S to update the original video.
you can use a third-party player capable of rendering SRT subtitles on top of hardware-accelerated video playback; then, you won't need to use Subler at all, just copy the MP4 and the accompanying SRT file to your video player's Documents directory in iTunes and you're set. I'll discuss in my forthcoming roundup / bible what players these are.