About two months ago Plex/Nine, the most awesome Mac Media Center solution for OS X out there, was released. The release was an entire overhaul of the Plex/Eight code and basically had — featurewise — nothing new to offer (heck, even some stuff that worked before didn’t work anymore!). However, this release got me very, very excited.
Introducing the Plex Media Server
The thing that got me all excited was an architectural change within the app: in Plex/Nine the Media Server (viz. the code that scans your disks, detects your media and builds up the library) got separated from the Media Center itself. By this, the Media Center (
plex.app) was “downgraded” to being a client application which communicates with the Media Server.
The scanner code which steers the Media Server is, just as in Plex/Eight, really awesome: just tell the app where your movies and where your tv series are located and … that’s it. The thing is pure magic: it’ll detect everything it finds, download the description, fanart, etc.
Plex/Nine Sneak Preview, demonstrating the Media Server
(note that this footage is from a pre-alpha version. Stuff has changed by now ;))
Enter the magic
Not convinced yet? Hold on: Imagine you have a Mac Mini running Plex/Nine. The Plex Media Server on the Mini will build up a library that
plex.app can use and play back for you. Now, if you have a second Mac (say, a MacBook Pro) with Plex/Nine, that one too will have its own library.
The magic part?
plex.app from the MacBook Pro will also be able to communicate with the Mini’s Media Server (and vice versa)!
Yes, that’s right: the Plex Media Server allows connection of multiple (remote) clients! Above that this all goes automagically in
plex.app instance on any Mac within your LAN will detect all Media Servers running, load up their libraries and allow you to play back all media found by those Plex Media Servers. And it gets even better: remote libraries are shown exactly the same way as if they are loaded up on a local
plex.app instance: For example, if you’ve watched a movie on the Mini, the MacBook Pro will also mark it as watched.
This structural change has proven its use a few times by now here at home. Just this week my girlfriend was watching the television (on which the Mac Mini is hooked) when I just wanted to resume watching an episode of The Big Bang Theory. No worries there: I started Plex/Nine on my MacBook Pro, scrolled through the (remote!) library and was able to resume the episode as where I stopped watching it on the Mini.
To those wanting to know the tech behind it: Plex Media Server sports a built-in web server, listening on port 32400. If you go to http://localhost:32400/, you’ll see an XML being returned. Each of the keys shown can be attached to the URL. http://localhost:32400/library/sections/1/all for example will show you all movies detected by the Plex Media Server (that is, if you have defined a movies section in the Media Server). If you dig a little deeper, you’ll eventually find the URLs pointing to the media files themselves 😉
Outside the box
When thinking outside the box and going beyond the “Media Center on a computer, hooked to your television” dogma, one can think of many uses thanks to the introduction the separate Media Server. What if, for example, you could have your Breakthrough Internet Communications Device™ (aka iPhone) play nice with the Plex Media Server?
Those familiar with Plex/Nine know that the above is exactly what the Plex developers have done: along with releasing Plex/Nine, they also release a companion iPhone application which loads up your library, and lets you playback your media. Yes, that’s right, you can watch your favorite films right in your bed, on your iPhone.
Now, I’m not talking about something like iTunes’ Shared Library where you get a table with a list of names, but a feature complete client with full integration which shows you a thumbnail, the description, etc.
Two weeks after the Plex/Nine release, an external developer also released an iPad Plex Client, named KLEXi
How they’ve done it? Simple: they’re communicating with Plex Media Server’s built-in webserver 😉
The possibilities are endless
The Plex developers even took it to the next level by announcing a partnership with LG Electronics: any LG Netcast™ enabled HDTV or Blu-Ray device will act as a Plex client and will be able to play back media found on any Plex Media Server within your network.
And just today a YouTube video caught my attention: someone actually managed to hack Apple’s AppleTV2 and let it communicate with Plex Media Servers located on your network.
As all other clients mentioned before, this one too communicates with Plex Media Server’s built-in webserver. If you happen to own an AppleTV2, you can follow these instructions to make it all happen:
In closing, I think the separation of the Media Server from the Media Center/Player is one of (*) the best moves the developers have done. Being a web developer, I cannot help noticing a striking resemblance with how we build (some, not all) web applications today: provide a data extraction layer (API) and build your app on top of that (cfr. Twitter, Gowalla, etc.).
Plex developers, I bow for thee!
(*) Another great move is the implementation of a metadata caching server on their end, but that’s a whole other story 😉