Building a Docker Media Server – Hardware Selection

Matching Performance to Needs

Later in the series, we’ll talk about my favourite media server app – Plex Media Server. Plex gives your media server the boost needed to get media streaming successfully to a host of network devices. It does this in two ways – first, ensuring the appropriate networking standards are being used to transfer the media to a network device. Second, by transcoding (converting in real-time) any media that is in a media format not supported by that streaming device.

This latter feature is discretionary (that is, you can choose to batch convert your media files to compatible formats offline, thanks to another Plex feature called Optimized Versions) should you wish. Real-time transcoding is far more convenient, but requires a lot more processing. In fact, it’s probably the biggest strain you’ll place on your media server, which is why it’s worth considering the feature now when selecting your hardware.

So, let’s say you’ve built an awesome movie library, with hundreds of hours of high-definition entertainment stored on your media server in beautiful 1080p high definition (or ultra high definition) with a selection of 5.1/7.1 DTS-HD soundtracks.

If these are high-bitrate Blu-ray Disc rips, each movie file could easily be up to 50-60 GB in size. They’ll most likely look beautiful when played locally on your media server but streaming this kind of quality over the network? Well, you have three challenges to overcome.

First, your network needs to be fast enough to shift a lot of data in a timely fashion – not a problem on high-speed wired networks, and a good quality 802.11ac Wi-Fi signal should also suffice. The second challenge is ensuring the device you’re streaming to supports the file format your Blu-ray rip (or whatever) is encoded in. The third challenge is predominately an issue for mobile devices, like tablets and smartphones – these devices tend to have battery-sipping, low-power processors and if you ever tried playing video on a PC ten or fifteen years ago, you’ll know that humble CPUs aren’t great friends with high-quality media.

A few years ago, the solution to these challenges was manually encoding several versions of your media library to ensure your movies would play on a variety of devices. For large libraries, you’d queue up your movies in a transcoding app like the excellent Handbrake (http://www.handbrake.fr) select the relevant encoding conversion profile for your device du choix and let it chug away for three weeks or so.

While these encoding challenges remain, Plex Media Server includes a transcoder that identifies the filetype and format your client device supports and automatically converts your video in real time, before streaming over the network. Put simply, media that is incompatible with your device will be converted to a playable format – automatically, behind the scenes, without any action required on your part. If you’re going to stream media to multiple devices, especially when those files will need transcoding, you’ll need a decent engine room to prevent stuttering and pauses.

The developers of Plex recommend a processor that has a PassMark score of at least 2000 for transcoding a single 1080p high definition file, encoded at a 10 Mbps bitrate (decent quality, but not excessively high). For 720p/4Mbps files, the figure drops to a PassMark of 1500. That’s for a single, transcoded stream. Where no transcoding is required (local playback, or where your client device supports the filetype) you’ll be fine with a lower specification CPU. Want to transcode multiple streams simultaneously? Multiply that PassMark figure by the number of streams for a rough estimation of performance.

I bet you’re wondering what the PassMark score is for your media server now, right? I have two options for you: first, you can refer to the http://cpubenchmark.net/ website to search previously tested results for a swathe of processors. Alternatively, download a trial edition of the excellent PassMark PerformanceTest (http://www.passmark.com/products/pt.htm) benchmark suite (which we use for most of our reviews at We Got Served) which not only will test your home server’s CPU and graphics capabilities, but can also be used to test your network speeds (more on this here: http://www.passmark.com/products/pt_advnet.htm).

As an example, I’ve  run PerformanceTest on a media server I’m using at the moment. It’s running an Intel Core i5-4790 processor (getting a little old now, but still very capable). It gets a CPU PassMark of 7471, meaning (again, roughly) I should expect to be able to transcode three simultaneous 1080p streams on this media server. That’s going to work well for my family.

63

To put that result into context, I also ran the benchmark on a PC running a low-power mobile Intel Core i5 processor (the 1.3 GHz Intel Core i5-4250U) and the result was just 3400 – good enough for a single stream, but that’s it. At the other end of the spectrum, an Intel Core i7-6700K picks up a PassMark of 11327.

As an aside, I’m basing this discussion around Plex Media Server, but that’s only part of the story. At the time of writing, Plex Media Server transcoding does not take advantage of supporting media encoding technologies like Intel Quick Sync Video (built into many Intel CPUs) and Nvidia NVENC (supported on the company’s graphics cards). So it requires the CPU itself to do the heavy lifting. Other media server apps, like Emby, are able to offload transcoding to Quick Sync Video/NVENC so may facilitate a (slightly) lower specification. Plex currently has hardware transcoding support in beta, so it looks like its on the way for 2017.

By now, I’m sure you get the point. Sure, that ARM CPU and 2 GB RAM will deliver the basics of a competent media server. But if you want to do more, you’re going to have to spend more. My experience is that once you’re up and running, you always want to do more, so it makes sense to specify hardware for tomorrow’s requirements, rather than today’s!

Leave a Reply