By Werner Ruotsalainen on Sat, 05/26/2012
UPDATE (11/Oct/2012): HERE, I've reported on the brand new (4.0.2) version's vastly reduced MKV hardware playback compliance now that AC-3 support had to be removed from the player. Please read it so that you can know when to use the new version for MKV playback and when not. (Generally, not for anything Full HD and containing non-AAC audio tracks.)
MKV files are very popular. For example, the very popular, great (and free!!) DVD / Blue Ray / to some extent, HD DVD ripper, MakeMKV (I can only recommend it!) uses it as the only target format because it's probably the only format to keep all the features (menus etc.) of a DVD. This so-called “container” (that's the MKV) is far more advanced than anything else out there. For example, it can store not only goodies like chapter info (including name) and menus, but even individual files (for example, a text file explaining what is on the video etc.) and any kind of subtitles. For example, you cannot (officially) store bitmap or animated (ASS) subtitles in a MOV / MP4 / M4V file (you must do convert it into some kind of a textual format or, even worse, “burn” them in the video file itself) – with MKV, you can do this (too). No wonder the MakeMKV folks have gone for MKV too.
Unfortunately, as I've explained in several of my previous articles, there is no native MKV support on iOS and the third-party applications that do handle the container are not allowed to use the hardware H.264 decoding facilities of the iPhone / iPad, which would be essential for the stuttering-less playback of high-resolution (more than 720p HD) content.
So far, the only way to play back high-resolution MKV files containing H.264 video was either pre-remuxing it into a hardware playback-friendly MOV / MP4 / M4V file (preferably with the free and very easy-to-use Subler) or jailbreaking the iDevice and using either the jailbreak-only XBMC or RushPlayer+. On non-jailbroken iOS devices, the processor has just insufficient power to properly decode the video content. (Note that the very few MKV's that have other kind of hi-res video, most importantly and usually, VC-1 of the now-dead HD DVD's cannot be played back on iOS at all as VC-1 isn't supported by the hardware and software-based Full HD VC-1 decoding is just too slow. Please see my WMV bible for more info on VC-1, should you run into such an MKV file. You most probably won't as HD DVD's, particularly ones having VC-1 video, have become pretty rare lately with the demise of the standard and Blue Ray having won.)
Sure, there have been some attempts (intro / background article HERE) at trying to circumvent Apple's (totally unneeded, I should add) restriction by, behind the scenes, quickly converting MKV files into MP4's every 10-15 seconds and feeding these small chunks of MP4 files to the hardware decoder, but the AppStore apps that have employed this scheme have all introduced an intolerable frozen second (EC Player) or even a complete video skip (RushPlayer) with a dark screen (which is particularly ugly and annoying when watching the video wirelessly over AirPlay). The only usable player, “It's Playing”, was released yesterday (review, with a comparison video to the new BUZZ Player, is HERE.)
Much as I prefer the (depending on the content to be played back) GoodPlayer, AVPlayerHD, It's Playing and XBMC to it, BUZZ Player is still one of the best media players out there. It has just received some MKV remuxing support, which I've very thoroughly tested. To summarize it: when it works (with only selected input file formats), it works far better than the previous players, EC Player and RushPlayer, supporting MKV playback using exactly the same trick (converting the MKV footage into MP4's in the background) and, depending on what you need (DSP / subtitles / DTS support), is a decent alternative to the brand new version of “It's Playing”.
The biggest problems with the player are as follows: there is absolutely no support for MKV files with DTS audio, even if these files have (a) compliant (for example, AC3) other audio track(s): they'll be played back using software-based decoding (that is, very slowly). An example of these files is the standard “Monsters” test video is HERE. Unfortunately, I can't provide you with demos of multitrack MKV files because of the one-track-at-most restriction explained HERE, at the bottom but believe me, I've tested the player with several MKV files.
Files purely having an AC3 audio track, however, play back just fine; for example, my test file HERE (and also much larger ones, of course).
Also, unfortunately, there is absolutely no embedded subtitle support for anything, unlike in, It's Playing (AppStore) or XBMC / RushPlayer+ (jailbroken Cydia). That is, if you do need embedded subtitle support, you'll need to choose from the latter three apps. If your iDevice is jailbroken and don't need the unique DSP functionality (saturation change, for example) of It's Playing, limit your selection to XBMC / RushPlayer+ as they deliver more stutter-free image. They have no playback speed problems at all on the new, jailbroken iPad (3), show the subtitles and also let for changing the brightness (RushPlayer+) or the audio boosting volume (XBMC).)
Isn't there any freeze / skip, then?
Of course there is! It's just that these freezes are VERY rare. The temporary files the app creates can be of even 410 Mbytes (for a 10 Mbps H.264 + AC3 file), which means you'll only see such temporary freezes every, say, 1.5-3 minutes only. As opposed to the AppStore RushPlayer, these are “only” frozen frames and not total black-outs, which means they're far more AirPlay-friendly.
What about seeking?
iOS video player apps that need to quickly remux parts of the MKV file into MP4's generally have a hard time seeking around the file. For example, RushPlayer can't seek in any way. (The jailbroken, and, consequently, much better version of the player, RushPlayer+, has no such problem: it seeks instantly. So does XBMC.) It's Playing is a lot better in this respect, but if you exit the app, return to it and try to seek back too much, it'll stop playing and states the video can't be decoded by the hardware. (That is, you'll need to re-set it via several taps to play it using hardware acceleration.)
Seeking is a bit slow, but that's understandable – and it works. There may be some lip synch issues after that (I haven't tested the latter thoroughly – seen only once).
En/disabling hardware-assisted playback
It's enabled by default (see the annotated, brand new switch):
All in all,
- absolutely can't / don't want to remux your MKV files to MOV (M4V / MP4) files, which would make it possible to use dozens of other players AND
- have an MKV file that doesn't have a DTS audio track (played back by It's Playing, RushPlayer+ and XBMC) AND
- you don't want to use the embedded subtitles, if any (shown by It's Playing, RushPlayer+ and XBMC) AND
- your iDevice isn't jailbroken (making it impossible to use RushPlayer+ or XBMC) AND
- you don't want to use any runtime DSP's like brightness / saturation / speed change or volume boosting (It's Playing or the two jailbroken apps),
BUZZ Player is the best choice for MKV playback for the time being.
Today, in addition to the It's Playing vs. BUZZ Player video, I've made another one, also showing the current versions of XBMC and RushPlayer (the AppStore version):
(Note that I've also tried to show EC Player on my jailbroken iPad 3 (on the right). It, however, continuously crashed. So did both RushPlayer and the same EC Player on another iPad 3 (on the left). This is why, generally, I stopped using the iPad 3 on the left after a while and switched to entirely using the right one to show the speed of these players. Note that the annoying, longish dark pause isn't really visible with this RushPlayer footage, probably because of the low bitrate and the limited length of the video.)