PDA

View Full Version : The Roundup: Hardware-accelerated MKV playback over SMB




Menneisyys2
May 4, 2013, 12:43 PM
This article targets advanced users that would like to play back MKV video files off SMB networking shares; that is, without copying them on their iDevices first.

Here at MacRumors (original question (http://forums.macrumors.com/showpost.php?p=17225164&postcount=1); an answer to that, also mentioning me (http://forums.macrumors.com/showpost.php?p=17227699&postcount=2)), I've been asked to elaborate on the current state of SMB + MKV support on iOS.

As you may recall, in my SMB bible (http://forums.macrumors.com/showthread.php?p=17229009), exactly half a year ago, I couldn't recommend any non-jailbroken player for this task. None of them supported hardware-assisted playback over SMB. The only player capable of all this, XBMC, was jailbreak only at the time of writing. Sure, there were several players capable of software-only playback but, again, not using hardware decoding may result in a much-much lower battery life, higher operational temperature and, particularly with non-A6(X)-based players, the inability to play back 720p (let alone 1080p) videos without stuttering.

Therefore, I've quickly re-run my extended suite of MKV streaming tests to find out how the new versions of the most important / recommended players fare.

I'm delighted to say that the situation is far better now than it was back in early December: two of the AppStore players do play back those videos in hardware: EC Player and my personal favorite, nPlayer. Another, otherwise, recommended player, “It's Playing” has also received significantly better SMB support; it also plays back these videos, particularly on slower (pre-A6) hardware, much faster than anything software-decoding-based, but it still consumes significantly more power than the strictly hardware-only players (EC Player / nPlayer).

Of the two players, nPlayer is definitely the better choice. It has far better format support, stability etc. However, if you absolutely don't want to pay for it and already have EC Player, you can safely go on using the latter player, assuming your MKV's don't have AC3 audio tracks. (nPlayer officially supports AC3. Note that it doesn't support DTS any more.)

Note that neither player supports automatic SMB discovery, unlike players that have far better networking support; for example, GoodPlayer or PowerPlayer. (Unfortunately, these two players still don't have hardware MKV decoding support over network (PowerPlayer) or at all (GoodPlayer)).

1.1 Testing methology

For the tests, I've slightly modified the standardized 1080p H.264 + DTS MKV test video (a short clip from Monsters, Inc.; available HERE (http://www.auby.no/files/video_tests/h264_1080p_hp_4.1_10mbps_dts_unstyled_subs_monsters.mkv), linked from THIS (http://www.auby.no/files/video_tests/) video test sample directory page).
- I've removed the subtitle track from the MKV file and included it along with the (new) MKV file with exactly the same name (and with the standard .srt extension)
- I've reencoded the DTS audio track to both an 5-channel AC3 and a two-channel AAC one; that is, I've included two audio tracks in the target MKV file.

(For all this, I've used the excellent MKVTools app.)

Note that I've made a dumbed-down version of the video online so that you can test it too. It's HERE (https://dl.dropboxusercontent.com/u/81986513/052013/mkvsmb/h264_1080p_hp_4.1_10mbps_dts_unstyled_subs_monsters.mkv.removed.mkv.muxed.mkv.muxed.zip). To save bandwidth, it's much more compressed than the original (1 Mbps as opposed to the original 10 Mbps), which means it has way worse image quality. This also mean that software-only players may play it much faster than the original, 10 Mbps one you can also see in the benchmark videos below. Nevertheless, it's still much better than nothing: after all, you can test your players on this test video yourself without having to convert the audio tracks and delete the subtitle track from the original test video.

I've shared this video in a subfolder on my 10.8 Mountain Lion MBP, using the SMB sharing support of the operating system. Some players (e.g., the above-mentioned Good/PowerPlayer) were able to automatically discover this share; other players didn't (in addition to the already-mentioned EC Player and nPlayer, XBMC doesn't support SMB discovery either). With them, I manually had to enter the local IP address of my desktop.

As the original poster asked about previous-generation devices (and not iPad 4's), all tests have been done on my iPad 3 running on the latest iOS version (6.1.3). This (6.1.3 can't be jailbroken) also means it isn't jailbroken; that is, there could be absolutely nothing to throttle video playback. The only exception was, naturally, the jailbreak-only XBMC, which I tested on my other iPad 3, running over iOS 6.1.2.

With all but two players, I used the absolutely excellent Elgato Game Capture HD to directly capture the output over the HDMI adapter. This has resulted in a much better audio / video quality than using an external camera. I only needed to use the latter in two cases: with EC Player and XBMC. EC Player takes over the control of the external screen but doesn't seem to output anything there (it remains black all the time) and my other iPad3, on which XBMC runs, for some reason, doesn't output video over any kind of video adapter / cable. (Dunno why – a jailbreak tweak maybe? I'll try to fix this issue some time. Tested with all four cables and adapters: VGA, HDMI, composite, component.)

To stay with a mirrored screen, I've explicitly disabled TV out in GoodPlayer, which has native TV out support. With nPlayer, as soon as it switched to native TV output mode, I've forced it back to mirrored output mode at once, as soon as it started playback. (This can easily be done with the phone icon displayed in the center of the screen while outputting video to the external screen.) On It's Playing, it's not possible to avoid switching to outputting video to the TV at all. PlayerXTreme doesn't support TV out.

Note that all videos are auto-cropped by Handbrake, except for the Oplayer HD one. It was too late when I realized I didn't disable auto-cropping while using the excellent HandBrakeBatch for batch compression before uploading to YouTube. Neverheless, you don't lose much:
- if a recording is made strictly in mirrored mode (that is, the player never switches to native output), there wouldn't be any point in NOT cropping the black areas on all the four edges.
- with players switching to native TV output (nPlayer, It's Playing and some other), I'll later, in another article, elaborate on whether they support completely disabling the, by default, enabled overscanning mode – the one that makes the output letterboxed of most AppStore apps with native TV output capabilities.

Note that, as opposed to mirroring 3D (OpenGL) graphics on the external screen (more on that latter, in another article), screen mirroring doesn't have any adverse effect on external rendering speed of simple video playback. That is, the non-camera-based captures I'm presenting you exactly show the exact speed (framerate etc.) of playback.

1.2 The results

1.2.2 The two players that decode MKV videos in hardware over SMB

1.2.2.1 nPlayer

As has already been hinted on, this is the player I recommend the most. It's absolutely great as a generic player – and also shines as an SMB one. You definitely shouldn't miss it.

(AppStore link (https://itunes.apple.com/app/nplayer/id539397400?mt=8); $2.99; Universal)

Test benchmark video: http://youtu.be/E_10-LDJ9VQ

https://dl.dropboxusercontent.com/u/81986513/052013/mkvsmb/nplayer-network.jpg (https://dl.dropboxusercontent.com/u/81986513/052013/mkvsmb/nplayer-network.PNG)
(A screenshot showing nPlayer's support for networking streaming / sharing protocols. Click for larger image.)

1.2.2.1 EC Player

This is the (only) other player with hardware MKV playback over SMB. Not as recommeded as nPlayer. For example, as the demo video also shows below, with a dual-audiotrack (AC3 + AAC) MKV file, it still wasn't able to play back the AAC track and there was no way of configuring it to play the second (AAC) track. Therefore, playback remained silent. (It wouldn't have been silent with AAC-only MKV input files, of course.)

There was no such problem with nPlayer, which, incidentally, officially supports AC3, unlike EC Player.

Demo video: http://youtu.be/9qVtYQLKshc

1.2.3 Other SMB-capable players not decoding MKV's in hardware

1.2.3.1 GoodPlayer and PowerPlayer

These two players have exceptionally good generic networking support; for example, unlike (the above, most recommended) nPlayer, they also support SMB auto-discovery of SMB servers running on OS X.

Unfortunately, their SMB MKV playback capabilities are really- really bad. The biggest problem with both GoodPlayer and PowerPlayer has always been the sub-par, slow H.264 decoder. This, unfortunately, shows in these benchmark videos: playback is just unbearably choppy and is more like a slideshow. Completely useless at 1080p on even A6-based iDevices (iPad 4/ iPhone 5), let alone even slower models.

Demo video: GoodPlayer: http://youtu.be/MvWeT86T92A

Demo video: PowerPlayer: http://youtu.be/WrmedC1HD_Y

1.2.3.2 PlayerXTreme

This player, which, almost a year ago, I didn't recommend at all, has been constantly improving. Recent versions have become pretty good. Unfortunately, not even the latest version supports hardware playback over SMB. Nevertheless, the decoding speed is way better than that of GoodPlayer or PowerPlayer.

Demo video: http://youtu.be/mc_S8qqTekY

1.2.3.3 Oplayer HD

This player doesn't support hardware playback either.

Demo video: http://youtu.be/KaW13iPtZFw

1.2.3.4 eXPlayer HD

eXPlayer HD, which is, otherwise, definitely recommended for playback of iOS-native video formats (mp4 / mov / m4v), still hasn't received MKV decoding support. Not recommended for MKV playback over SMB.

Demo video: http://youtu.be/-gW-8XlZkMw

1.2.3.5 BUZZ Player.

(Note that this refers to the now-current, 4. version, not the discontinued one (story on the switching (http://forums.macrumors.com/showpost.php?p=16233863&postcount=6)).)

This, otherwise, excellent generic player has turned out not to support hardware MKV playback either. Not recommended for that.

Demo video: http://youtu.be/e6Qx-DqrLq4

1.2.3.6 It's Playing

I don't recommend this player for streamed MKV playback. While, being based on some kind of hardware acceleration, it has far more fluid video playback as any of the software-only players, it still doesn't deliver as fluid playback as nPlayer (and its power usage is considerably higher too). In addition, it doesn't (currently) support AC3. With MKV files with both AC3 and AAC tracks, if AC3 is the first (as is the case with my benchmark video MKV file), it won't play back AAC tracks either and you can't switch audio channels when playing streaming videos either.

Demo video: http://youtu.be/81TduWHJlzA. Note that, during the native TV output play, the long pauses show I've paused playback to find out whether it's possible to switch the audio track. As, during playback, there wasn't mirroring, this isn't shown in this video.

1.2.4 More known titles without SMB support at all

I've tested the latest version of the following players to check whether they already support SMB streaming to find out they don't:

AVPlayer(HD) - probably the second-most recommended generic player, nPlayer being the first. Unfortunately, it only supports FTP.

ArkMC (this UPnP-only player (review (http://forums.macrumors.com/showthread.php?t=1505088)) has recently received a much better engine, offering, according to the developers, way better MKV playback performance. Will test it some time when I review UPnP playback advancements since my original UPnP bible.)

yaPlayer

HD Player Pro

MoliPlayer Pro

CineXPlayer

RushPlayer(+)

2. What about XBMC?

I still don't recommend it for SMB playback. It, as of the just-released 12.2 version, still has major buffering issues. The playback will very often be paused for buffering, while, under exactly the same circumstances, the - in this regard, much-much better - EC Player and nPlayer won't pause at all.

Demo (camera) video: http://youtu.be/5IrYKk7Vexg



brenosabino
May 6, 2013, 05:28 PM
I tried a 1080p "WEB-DL" video with nPlayer and it played without issues.
When outputting the video with the hdmi adapter theres some overscan (as in all other iOS apps except ones with native video output). Audio was output in stereo and the dolby option only enhances the sound for small speakers.

With XBMC it also played without issues and loaded the video faster, I didnt have any buffer issues (at least for the quick test I did). Also I have the option to enable native video output by going to settings - system - video output and changing to Fullscreen #2. And I can enable 5.1 audio by changing the audio output to hdmi and the channels to 5.1.

All this was tested on a iPhone 4S jailbroken on iOS 6.1.2.

Menneisyys2
May 7, 2013, 03:18 AM
When outputting the video with the hdmi adapter theres some overscan (as in all other iOS apps except ones with native video output).

I'll talk to the nPlayer devs as this is, programmatically, very easy to fix.

In the meantime, you could try the end user tricks I've elaborated on at http://forums.macrumors.com/showthread.php?t=1578989 : using the DVI (via a cheap passive cable / adapter) or VGA (if you have a VGA connector) input instead on the monitor / projector, if possible OR enabling overscanning in the monitor itself.

Menneisyys2
May 8, 2013, 05:09 AM
When outputting the video with the hdmi adapter theres some overscan (as in all other iOS apps except ones with native video output).

Talked to them. It was indeed worth spending the time on writing my overscan programming tutorial I've linked to above: it has helped the nPlayer folks to quickly implement overscan disabling.

The next version of nPlayer will no longer have overscan over HDMI.

rhett7660
May 8, 2013, 09:08 AM
Hell of a round post!! Thank you very much!

j.leson
Jun 16, 2013, 08:01 AM
Thanks for the round up! It sucks that nplayer does not support dts audio. Any recs for a smb player that can stream in hd, and supports dts?

Menneisyys2
Jun 16, 2013, 10:42 AM
Thanks for the round up! It sucks that nplayer does not support dts audio. Any recs for a smb player that can stream in hd, and supports dts?

Streaming in HD means it must support hardware decoding, which pretty much narrows it down to the reviewed titles above. Of them, currently, only XBMC supports DTS. It, however, isn't that recommended for SMB streaming and only runs on JB'n devices. Nevertheless, you may still want to give it a try if you have a JB'n device.

Otherwise, go for a quick DTS -> AAC (or AC3) remuxing.

stream41
Sep 22, 2013, 10:48 PM
I'm having trouble getting nPlayer to see any files shared from my Time Capsule. nPlayer sees the Windows SMB shares on my network just fine, and it finds the Time Capsule, but when you browse to it, it doesn't show either of the two hard drives connected to the TC via USB that are shared on the network. I understand that the TC uses both AFP and SMB, so it should work. Any ideas? Thanks!

stream41
Sep 22, 2013, 11:14 PM
Nevermind - figured it out! I had to add the share manually and use my login info for the TC for those shared drives. Damn shame nPlayer no longer supports DTS audio. There's no way I'm re-ripping 195 Blu-rays to also include DD3/2+1 audio :)

Menneisyys2
Sep 24, 2013, 05:38 AM
Nevermind - figured it out! I had to add the share manually and use my login info for the TC for those shared drives. Damn shame nPlayer no longer supports DTS audio. There's no way I'm re-ripping 195 Blu-rays to also include DD3/2+1 audio :)

No need for re-ripping.I've published several tutorials on quick DTS / AC3 > AAC remuxing conversion.

stream41
Sep 24, 2013, 08:21 AM
No need for re-ripping.I've published several tutorials on quick DTS / AC3 > AAC remuxing conversion.

Now there's an idea. Would I be able to keep the original DTS track and the new AAC track?

fhall1
Sep 25, 2013, 07:30 AM
No need for re-ripping.I've published several tutorials on quick DTS / AC3 > AAC remuxing conversion.

Can you point me to one of the more recent tutorials on this?

Menneisyys2
Sep 25, 2013, 08:00 AM
Will answer later - now I'm extremely busy, sorry.

gotluck
Nov 3, 2013, 12:58 PM
Am I missing something or is nplayer generally the king right now? OP seems up to date to me.

Great post!

Menneisyys2
Nov 5, 2013, 11:34 AM
Am I missing something or is nplayer generally the king right now? OP seems up to date to me.

Great post!

Sorry, haven't had the time to update the original post to reflect the changes of the last 11 months; that is, mostly, nPlayer's becoming the best all-in-one player with strong SMB support.

gotluck
Nov 5, 2013, 11:40 AM
Sorry, haven't had the time to update the original post to reflect the changes of the last 11 months; that is, mostly, nPlayer's becoming the best all-in-one player with strong SMB support.

Thank you sir. Looks like I will be buying nPlayer