Synology DS214play: Intel Evansport Almost Done Rightby Ganesh T S on May 20, 2014 3:00 PM EST
DSM 5.0: Video Streaming & Transcoding
DSM's multimedia capabilities are brought out by packages installed on the NAS in conjunction with mobile apps / external access. The DLNA ecosystem is served with the Media Server package.
Evansport's transcoding capabilities are utilized in two packages, Video Station and Media Server. The latter enables the DS214play to act as a DLNA DMS (Digital Media Server). The various options available in the Media Server package are made clear in the gallery below.
The important points to note include the fact that folders can be set up for indexing of particular media types only and that video transcoding can be enabled for certain extensions that DLNA DMRs (Digital Media Renderers) don't commonly support (rm, rmvb, mkv). To prove that hardware transcoding works, we have a screenshot below of the resource usage and running processes on the DS214play taken while playing back a VC1 MKV clip using DLNA on a Sony KDL46EX720 TV.
Interesting aspects are pointed out in the above screen capture. Note that transcoding a 1080p VC-1 clip to 1080p H.264 consumes less than 20% CPU resources. The running processes give more insight into how hardware transcoding is utilized. We find that Synology triggers ffmpeg for this purpose. However, the options (such as -prefer_smd and -vcodec h264_smd) indicate that this is a custom build for the DS214play / Evansport platform. Before digging further, a short detour to understand the various streaming profiles is necessary.
Adaptive Bitrate Streaming
The quality of video streaming depends heavily on the network characteristics. Towards this, various adaptive bitrate streaming schemes are used. The MPEG committee's standard is called DASH (Dynamic Adaptive Streaming over HTTP) and it works by dividing the multimedia stream into segments (with each one having a MPD (media presentation description) holding the important data - URL, resolution, bitrate etc.). This scheme doesn't rely on or specify the underlying codecs. There are a number of open source implementations of the standard.
Apple has their own protocol for adaptive bitrate streaming, the HLS (HTTP Live Streaming). It also enjoys widespread software support and is publicly documented, though it is not a standard yet. Operation is similar to DASH in the sense that the stream is divided into multiple chunks, but differences come in the form of how the receiver is made aware of the available underlying streams. In the case of DASH, the MPD holds the URL, but HLS provides the list as a playlist at the start of the streaming session.
Microsoft also has its own solution, Smooth Streaming, for this purpose. High level details are available from Microsoft here. Software support for Smooth Streaming has traditionally come only from Microsoft which provides SDKs for various platforms.
There are other adaptive bitrate streaming techniques, but we chose to talk about the above three because they are amongst the transcoding profiles supported by Synology in the DS214play.
Synology's Transcoding Profiles
Synology stores transcoding aspects in various files under /volume1/@appstore/VideoStation/etc. Interesting contents are brought out in the screenshot below. Depending on the underlying architecture of the NAS, different transcoding profiles may be chosen. DS214play falls under 'evansport_2'. Other profiles (not shown in the screenshot) include x86_1, x86_2, bromolow_2 and cedarview_2.
Roku and AppleTV have special profiles. For the rest, some standard profiles are chosen. Note that anything with the _smd option can be expected to take advantage of Evansport's transcoder engine. Bitrates of the transcoded stream as well as the output audio profile can be gleaned from this data.
All this background information is fine and dandy, but I am sure readers are interested in how well does the transcoding works in practice. We are going to see a sharp polarization in opinions over this aspect. While some people are going to be extremely happy with the transcoding capabilities, others might consider the DS214play to be a disappointment in the same department.
What Works? - iOS Streaming & Compliant Files
iOS users with a library of files from cameras or other sources which don't have any type of DTS audio are most likely to be happy campers. In our tests using the DS Video app on a iPhone 4S, we found that all videos taken with camcorders (AVCHD / MPEG-2) as well as Blu-ray MKV remuxes (H.264 / VC-1) with AC3 / E-AC3 audio played back perfectly. Real Media clips in standard definition were also not a problem (though those used software transcoding). Chromecasting these clips worked without issue too.
What Doesn't? - Inconsistent Android Experience & Chromecasting, No DTS, No Plex
Unfortunately, the situation on the Android side is not that great. Due to the variety of supported formats for hardware-accelerated decode on various platforms, Synology suggests using MX Player as the decoder application for videos played via DS Video. Without the app installed, DS Video tries to play back the stream via the default Android app (Gallery / Photo) and this results in a 'Can't play video' message even on a Nexus 5 with an unaltered factory image. We did cursory testing with a Nexus 5, Samsung Galaxy Tab Pro 8.4, Samsung Galaxy Tab Pro 10.1 and an Asus Transformer TF300T. In-depth testing was done on a Nexus 4.
For our experiments, we chose a 1080p VC-1 clip with E-AC3 audio in a MKV container and DS Video on a Nexus 4. DS Video's settings include an option to select playback quality. Setting it on Auto is expected to provide the best results. However, we observed that within the local network / when external bandwidth is really good, DS Video opts to send out the unmodified VC-1 clip. With MX Player set in H/W+ decoder mode, the clip never starts playing back and we get dumped back to the DS Video interface. With H/W+ mode disabled, MX Player plays back the 1080p VC-1 clip in software mode with plenty of frame drops. In either configuration, casting the clip to a Chromecast simply didn't work. Setting the DS Video quality option to Medium gave better results. We do see transcoding getting activated within the MX Player interface, as shown in the gallery below. Unfortunately, even in this configuration, Chromecasting was a futile exercise.
Chromecasting a remuxed Blu-ray VC1 Clip (MKV) didn't work
Our experience with DS Video on an Android device and Chromecast was a mixed bag. While many media files were 'compliant' enough to be Chromecasted (H.264 (Blu-ray profile) in MKV, SD MPEG-1 / MPEG-2 / Real Media content), others simply failed to cast despite playing back on DS Video / MX Player.
We found that many of our test streams refused to play through DS Video. Synology went through some of those and determined some aspects (such as Real Audio in a HD Real Media stream, or a H.264 video with a 1920x1088 size instead of the standard 1920x1080) that couldn't be supported. We do not have any complaints about these 'difficult files' not playing back, but the bigger issue was that once an attempt to play such a file was made, the transcoder state got messed up. Any further transcoding / video serving became possible only after a restart of the system.
One of the disappointing retrogressions in the multimedia space for DSM 5.0 is the absence of a DTS license. Due to this, streams with DTS audio either don't play back through DS Video at all, or play back without audio. Apparently, Synology has been having some licensing issues with DTS, and there is no resolution in sight.
Another unfortunate aspect of the DS214play is the fact that it currently doesn't support the Plex Media Server package (SPK version 0.9.9.7.429-f80a8d6 downloaded from plex.tv). In any case, Plex has never been one to worry about hardware accelerated transcoding, and the Atom CPUs in the Evansport SoC do not perform as well as dedicated Atom CPUs such as the D270x. Given that Plex releases exist for other Evansport-based NAS units, it is not inconceivable that we will get Plex running on the DS214play in the near future.
Video Transcoding Summary
Since MX Player appears essential for DS Video on Android, it would be better if Synology works with them to make the Pro version available for all Synology NAS users who install DS Video. In addition, DS Video for Android should be smart enough to detect when transcoding is necessary, particularly if the quality settings are set to 'Auto'. In the ideal case, DS Video should be able to check up on the supported hardware codecs (and associated resolutions / bitrates) and ensure that the Video Station package on the NAS transcodes the source stream into the best possible quality in a supported codec.
On the whole, users with 'compliant' files will find the DS214play's transcoder working perfectly (as evidenced in this YouTube video), but those who don't and/or those who use Android devices end up with an inconsistent experience.