By Werner Ruotsalainen on Thu, 07/26/2012
UPDATE (08/08/2012): the just-released version (1.51) of AVPlayerHD no longer defaults to the hardware playback of MKV files, as is also mentioned in the update notes:
(click the image for a full-sized one! BTW, as you can see, a lot of other players have also received some serious updates in the last 2-3 days. So did the Photon Flash browser, which I'll also dedicate a separate article in the near future. PlayerXtreme, half-visible at the top of the screen, has only received some bugfixes.)
That is, don't forget to manually enable this feature before playing back MKV's! (See the screenshot below for more info on the location of the button.)
Note that the app at least promises audio track selection support for MP4 (MOV / M4V) files. However, the player immediately crashed when trying to open my standardized test file. The previous version didn't crash – but, of course, played back both audio tracks simultaneously, making the player useless. I couldn't help this by pre-selcting the audio track before playback. (Also see the section starting with “M4V's with more than one audio track” HERE on more info on multichannel hardware playback.)
Original article follows:
AVPlayerHD (iTunes link) has always been one of the most recommended video players on iOS. It has one of the best video decoder collections for most formats out there: H.264, WMV (dedicated WMV bible HERE), MSMPEG4 in AVI's etc.
So far, it sorely lacked something that some other players (BUZZ Player (dedicated article), It's Playing (dedicated article), PowerPlayer (dedicated article), EC Player, XBMC and RushPlayer(+) (dedicated article)) offered: hardware-accelerated MKV playback. MKV, as has emphasized in several of my articles, is the best way to directly “rip” your DVD's or Blue Ray discs as it's much more versatile a format than MOV / MP4 / M4V files natively supported by iOS. However, as AppStore apps are not allowed to directly use (albeit they certainly could) hardware acceleration for non-MOV / MP4 / M4V files, playing back 1080p MKV's properly (without dropped frames, stuttering etc.) has always been impossible.
This is why some (AppStore – for jailbroken players, there are no restrictions) players have implemented a quick “remux” type of decoder algorithm: they quickly re-pack 10-30-300-second-long sections of the original MKV movie to MOV / MP4 / M4V files and it's the latter files that they send the hardware player to. This results in vastly improved playback quality.
Today, a new version has been released, which, now, also has hardware accelerated MKV playback. An AppStore Update list screenshot (with the update info of some other apps):
(as usual, click the images for a full-sized version)
In my tests with tons of test and demo MKV videos, AVPlayerHD delivered wonderfully. Based on te results, it's, currently, by far the best MKV player for iOS as long as you don't jailbreak your device. (If you do and you don't need iPad 3 Retina support, XBMC is a great choice; also, RushPlayer+ is a decent player, then.)
Compared to all players out there, framedrops and pauses are far less prevalent than with any other player out there. (Probably BUZZ Player is the only exception, which also delivers excellent, fluent playback.) It also supports quick repositioning within the file (with both adaptive seeking / scrubbing speed and displaying the current frame during seeking), which is also VERY rarely implemented the way it should be done.
Compared to BUZZ Player, it has absolutely no problems with DTS audio tracks or subtitles. Unfortunately, these problems (1, no HW acceleration with any MKV that has a DTS audio track; 2, absolutely no embedded subtitle support) still haven't been fixed in BUZZ Player, not even after two months of my elaborating on them in my dedicated article.
Compared to It's Playing (my all-in-one favorite player because of the excellent DSP's), AVPlayerHD decodes MKV embedded subtitles properly – it does keep them displayed as long as it's required to, while It's Playing only displays them for about two seconds, independent of their true duration. In addition, it delivers considerably less stuttering video. Unfortunately, no DSP's are available, though.
Compared to PowerPlayer, it has a much-much-MUCH better framerate. Unfortunately, the current (1.3) version of PowerPlayer is still the HW-accelerated MKV player with the worst framerate and is, therefore, still not recommended.
Compared to RushPlayer, it doesn't crash. RushPlayer has a tendency of crashing, particularly when you switch to hardware decoding mode.
Compared to EC Player, it has far less annoying pauses and is much more stable (it hasn't ever crashed on me during MKV playback, unlike EC Player.).
MKV acceleration is enabled by default. It can be deactivated in Settings with the following button (see the red annotation):
Generally, you won't need to disable it often. As opposed to, say, BUZZ Player, MKV files with an incompatible video stream (for example, MPEG-2 created by MakeMKV - article) won't cause any problems - the players recognizes the incompatible format and doesn't try to pass it the hardware decoder.
The “cut up the original file and quickly repack it to a MOV” approach does have problems. For example, (wireless) AirPlay playback (to an Apple TV (ATV), for example), as long as you don't use native mirroring (which results in slow video transferring, lower resolution and the lack of using the entire horizontal screen estate), becomes fully impossible. The reason for this is that every time a new MOV file is silently created in the background, the playback on the ATV stops and the menu comes back. Then, the next MOV chunk is transferred to the ATV, the playback starts again etc. All in all, all this will be useless. EC Player, which has the best AirPlay support of all players, also suffers from this: only 7/15s is played of the beginning of the video; then, major, sometimes 40-50-sec-long skips start to come.
Note that, as far as other HW-decoding-friendly players are concerned,
Buzz Player: absolutely no AirPlay support at all (wired VGA / HDMI is supported, of course)
RushPlayer: as usual, just crashes upon manually switching to HW playback mode
Jailbreak players: XBMC and RushPlayer+: only audio is played back over AirPlay with major desynch issues
Unfortunately, AVPlayerHD is considerably worse than EC Player. I've never seen any video (most of my test videos are readily available from the above-linked reviews so that you can try too) that could be streamed from the AVPlayerHD to the ATV – every single one was rejected as incompatible. At the same time, MP4 and other, iOS-native files were played back just fine.
The latter AVPlayerHD-specific problem may be related to that the app may (I haven't scrutinized this with proper file format testing!) cut the source video “blindly” (or just uses an incompatible MOV container); this is why the ATV refuses to play any of them. Incidentally, one of my test video-MKV's, the Kung Fu Hustle intro (link; original MOV HERE) has some visual glitches during playback. The material gets green when a new file is started and, at the end, the top-down shot is also distorted. This may be caused by the “blind” cutting of the material. (Incidentally, the playback of the full, original video MKV – from which I've cut this small one – in AVPlayerHD doesn't show the same problems.)
Note that this only applies to wireless AirPlay playback. Wired (HDMI / VGA / composite / component) playback is just OK. (Tested with the VGA adapter.) When using wired connections (as opposed to AirPlay), BUZZ Player also delivers excellent results. Even the current, 12.0 alpha nighly build version of XBMC can mirror only (meaning can't use 16:9 to fill in entire screen etc). EC Player supports the external monitor natively but doesn't fill in entire screen horizontally, unlike AVPlayerHD or BUZZ Player.
All in all,
if you do need to play back MKV's and don't want to / can't remux them to MOV / MP4 / M4V files, you can't go wrong with AVPlayerHD. It's just GREAT. I only miss the excellent DSP's of It's Playing.