As most of you know, at the core of the Plex Media Server sits a powerful transcoding engine. Its raison d’être is to make your media available on the widest range of clients possible, over any connection. A 1080p MKV file, for example, is impossible to play on a tiny little Archos media player, because of hardware limitations. The Plex Media Server’s transcoder makes it possible to stream such a file to that device by performing a real-time conversion. On iOS devices, their limited support for alternative formats (such as MKV or AVI) also make conversion a must. Additionally, if you’re trying to play media over a low bandwidth link, such as a 3G network, even if you have a file with the right format and codecs, it would likely not stream correctly because of the limited bandwidth.
To summarize, the transcoder gets you your media, streamed in real time, regardless of what the player device is or what the speed of the connection is to the server.
There are two downsides to transcoding. First of all, it can take quite a bit of CPU on the server machine. Second of all, transcoding implies a decode and then a subsequent re-encode of the media, which is a lossy transformation, meaning the video quality will be degraded (although usually not perceptibly at higher qualities).
I’m quite pleased to say we’ve addressed both of these issues in this release.
First of all, we’ve introduced a feature we call DIrect Play, and here’s how it works: During the media analysis phase, the Plex Media Server looks at certain attributes of your media (resolution, bitrate, etc.). When a client requests a piece of media, the server looks at the client’s capabilities, compares them to the media parameters, and makes a determination as to whether or not the file can be directly played on the device. For example, if you have a properly prepared MP4 file, it’ll play without any transcoding on an iOS device. Tiny CPU usage, and no loss in quality. If you had a movie in MKV format and also encoded it for mobile devices (and both versions scanned into your library), the media server is smart enough to mark the specific version of the file as playable by the device.
This is all well and fine, but the media might not be in the right format in the first place, and encoding multiple versions of a file is a pain. For this reason, we’ve introduced a feature called Direct Streaming, As you might know, the current standard for web video is H.264 (regardless of how Google tries to undermine it); this codec happens to be the most common inside an MKV file, and also the most commonly supported on mobile devices. Android and iOS devices support decoding H.264 in hardware directly.
What you might not know is that the iOS devices (especially the latest generation, including the ATV2) have incredibly powerful little chips inside them for decoding video. Even though the specs say they are capable of 720p, it turns out that they do a good job with a lot of 1080p content as well. So when a client connects to the Plex Media Server, it describes its capabilities, and if the file falls within the acceptable range, the video is simply copied over to the new format (a process known as re-muxing). This again means that there is very little CPU used on the server side, and no loss in quality in the video. Streams start up nearly instantly, and seek quickly. All of this without the need to jailbreak, or use any private APIs.
Having the transcoder and these two new technologies, along with a set of heuristics built into the Plex Media Server, means that we are in a position to optimally deliver your media to all your devices: If you’re on a powerful enough client, with a high enough bandwidth connection, the media can be Direct Streamed over. On a lower bandwidth link, or on less powerful devices, full transcoding kicks in. (By the way, both of these features work with online media as well.)
I’ll leave you with this set of two screenshots, showing a 1080p movie, playing with Direct Streaming on an iPad. I can’t show you in a screenshot, but it started playing almost instantly. First one to name the movie in the comments gets a pet monkey.
Finally, we’ve added some additional quality settings, both for use in transcoding, and for help in determining whether or not Direct Streaming is applicable; for example, if you set the quality to 320kbps (a bad Wi-Fi link), it won’t try to Direct Stream a movie that’s 5Mbps.
To summarize these new features in a sentence: Your media is optimally and effortlessly available on a wide range of client devices, over any connection.