So, I have recently been doing some experimenting after finally getting my hands on an external Blu-Ray drive, and would like to share a couple of insights.
First, some background. I have been buying and ripping Blu-Rays to add to my Plex library using a piece of software called MakeMKV
so that I can watch them on my phone, tablet, etc. As such, I have been looking at ways to reduce the network utilisation of these streams, as currently my main computer is acting as my Plex server, and is connected via wi-fi (wired is not convenient at the moment). While the original MKV rips from the Blu-Ray discs look amazing, they use 24-30Mbps of bandwidth which (for some reason?) my router is unable to provide between the devices (even though they are on different bands), so I wanted to find a more reliable solution.
The first solution would of course be to just setup a wired network, but this isn't particularly convenient for everyone, so the only other option was to transcode the movies prestreaming.
The first try I did was with H.264 or AVC standard which was most recently amended in 2014. This codec has very wide support for devices and is the same codec used on Blu-Ray discs themselves. However, by transcoding using a Constant Quality factor, usually 15 for myself, you can reduce the file size while losing some quality. Another thing to consider is the encoder preset used, which defines how long it takes to transcode, but produces a smaller, higher quality file at the end. For most of my H.264 transcodes, I used slowest or placebo, as I was able to transcode them overnight without much issue. The final consideration is the encoder profile, which for this I set to High rather than Main, as I wanted the highest quality image. These produced files which were between 33-50% smaller in size, while retaining similar quality in the end result. Overall, I was quite pleased. However, I wanted to dig a bit deeper into some more modern standards, as H.264 was originally designed in 2003.
The next newest standard is H.265 or HEVC. This standard is used for pretty much all 4K content currently streamable from Netflix, and will also be used on 4K HDR Blu-Ray discs. As such, it has relatively little hardware support, with only Intel's Kaby Lake CPUs
providing full encode and decode support as well as NVIDIA 900 and 10 series GPUs
. AMD Polaris GPUs are capable of decoding but only partial encoding support.
Other hardware is also capable of doing so, including that in smartphones and Blu-Ray players and Smart TVs, but that varies a lot so only some models will support it. The rest use software decoding and encoding and as such are more power consuming. This is the main downside of H.265, as a similar quality transcode in H.265 took me about 2-3 times longer.
The major advantage to H.265 is that from my tests, it has provided between a 60-80% reduction in file size, at the same quality as a comparable H.264 file. As such, this is the codec I am wanting to use for my Plex server, however aforementioned compatibility issues mean that this is limited to my phone (Google Nexus 6P) and my PC, as my other devices (iPad Air 2, XBox One, Chromecast gen 1) do not support it and require that I transcode the files during playback.
I hope this gives some insight for those looking to create a Plex library, as I think this software is great and many should try it, especially if they have a home server of some kind.
Any insights from others would be of great help too, as I am still a sort of beginner myself.
Feature set E and above for decoding (E is hybrid hardware/software) https://en.wikipedia.org/wiki/Nvidia_NVENC
Maxwell Gen 2 (900 series and above) for encoding (900 series more limited than 10 series)