Thanks @ChuckPa – I’ll keep my eyes peeled for something in the next few weeks. Much appreciated.
Plex’s policy has always been one of not discussing roadmap.
To comment personally,
At this point in consumer grade, commodity hardware, development, the i7-7700 KabyLake is probably the sweet spot for the near future. It’s future-proof enough to handle anything you can throw at it for home use. One i7-6700, not even the 7700, can hardware transcode 2160p SDR (8-bit) with ease. I do it here all the time on my QNAP. I run out of devices to play the video on before I run out of CPU. The 7700 brings HDR decode and 2160p encode to the mix. This is why I assert it’s the sweet spot.
If you need more than that, you’re not a domestic user anymore; You’re commercial and Plex is not for commercial use so there would be an issue there in addition to you needing the seriously expensive Xeon CPUs. Costs would skyrocket.
I don’t think the FFmpeg project shares that view.
Kindly take notice to
Q: Is it perfectly alright to incorporate the whole FFmpeg core into my own commercial product?
A: You might have a problem here. There have been cases where companies have used FFmpeg in their products. These companies found out that once you start trying to make money from patented technologies, the owners of the patents will come after their licensing fees. Notably, MPEG LA is vigilant and diligent about collecting for MPEG-related technologies.
You are attempting to assert yourself into a matter to which you are not privy.
Any contractual arrangement between Plex and third parties is Company Confidential.
I fail to see how patents that Plex may or may not have licensed from other entities affects their obligations under the LGPL to provide the source for FFmpeg and the information necessary to compile it.
I am privy to being a paid customer of Plex, who has received LGPL-licensed software from Plex, downloaded the source code provided by Plex, and is now requesting the information necessary to compile said software.
Kindly.
Please allow me to restate.
You are not privy to all the legal matters and contractual arrangements between Plex and others.
You are not entitled to information how Plex complies with legal and contractual matters.
What you are asking for is Company Confidential.
I will thank you to cease and desist.
Sorry, folks, it seems there’s been a bit of miscommunication in here; hopefully I can get that all cleared up.
The transcoder is built in a bit of a complex way, but you can get the configure args by running the Plex Transcoder binary with no arguments. You’ll see a number of flags disabling codecs; for local use, you’ll likely want to remove those.
Regarding NVDEC, that feature was added to ffmpeg fairly recently, and we’ll be including it in a future update once we’ve integrated it and gone through testing. I can’t give any estimates on when that’ll happen, but it is on our radar.
Thanks @ChuckPA and @Ridley… Always great when we get good feedback, and even better, when something we want is pushed through! A+
Really looking forward to NVDEC support in Plex Server on Linux - would be a total game changer!
Thanks! I imagine ffmpeg 3.4 -> 4.0 will be an extensive change. I’m glad there is a team at Plex that manages the testing and integration to produce software that “just works” for us.
+1 from me for this feature as well. I wanted to buy a P2000 for enabling multiple 4k HEVC transcodes, but now I am on the fence. Currently considering switching to something like Emby.
@drivintin Were you able to try and compile the Plex Transcoder Sources using the NVDEC switch / pulling in the necessary changes from ffmpeg for that? Would be happy to assist you 
Maybe I am a bit confused… but isn’t this already a thing? There is a patch on github: keylase/nvidia-patch that unlocks the 2 stream limit on nvidia gpus. here is a short youtube tutorial on how to get ubuntu 18.04 running with the drivers and patch for a plex server. He used a 1080 and was able to get 20+ streams running on the gpu at a time.
Please excuse me if I am misunderstanding the issue here.
Edit: I was confused. Never mind 
The patch only enables unlimited ENCODES. Decoding is still done by the CPU with Nvidia GPUs on Linux until they compile it into the transcoder. Decoding is what is being discussed here. Hope that helps.
Hmmm, Yessssssss, My Precious…
I whole heartedly hope that decode is enabled (soon).
I just picked up a 1050, just to enable easing of the cpu given my existing workload, not even including the fact that I will be DOUBLING tuners soon (as soon as the New HDHomerun Prime HDHR5-6CC is released - will also get the Connect Quad)…
My vote for decoding to join encoding for linux (and sindows)…
If you need more than that, you’re not a domestic user anymore; You’re commercial and Plex is not for commercial use so there would be an issue there in addition to you needing the seriously expensive Xeon CPUs. Costs would skyrocket.
@ChuckPA, are you aware there are many domestic users with non intel platforms? have you never heard of AMD? The more affordable and more secure option that many ‘domestic’ users would like to take advantage of?
To my knowledge, the HW decoding/encoding is done on a separate dedicated part of GPU, not CUDA processing pipeline. No, that it matters much practically, although it will free the CUDA cores for other work. Linksys Support
So after not getting a windows vm up and running reliably, I decided to give messing with the plex transcoder another go. I managed to find the current ffmpeg source code used and am currently in the process of upgrading it to the newest version. Link can be found here: GitHub - galli-leo/FFmpeg at plex-changes (There could be parts missing here, but from spending a few hours with it, it seems that everything in the transcoder binary is here).
I just finished merging 4.0.2 of ffmpeg into that branch, not sure if it even compiles yet.
If anyone wants to help out, feel free to message me 
TL;DR: Got a lot of the build process working but ultimately the binary I’m producing is currently not working with Plex.
Hey so I worked on this a little bit. Here’s what I’ve found (so people aren’t duplicating work):
I’m running Fedora 28 for both my build and Plex machines.
I needed RPMFusion repo installed:
And the following build tools and dependencies:
After cloning the Git repo linked by @DJ_Lectr0, anyone doing this should double check they have the right branch checked out (silly mistake but cost me some time).
On my (Fedora) Plex server machine, I was able to get the list of configuration options by running with no arguments (path may change for other distros):
I found that I would get an error unless I first properly linked all the listed dependencies for the Plex Transcoder binary (found with the ldd /usr/lib/plexmediaserver/Plex\ Transcoder command):
I also found that I would get an error during the build unless I also added the --enable-pic option to the config arguments which may or may not indicate a problem with how I have everything setup, but I couldn’t find a way of getting it to build without that.
Anyway, so from the git working directory, of course:
Then make will generate the ffmpeg binary but we won’t need to do make install as we need to manually install the ffmpeg binary in the correct place as “Plex Transcoder”.
Then we place the newly built ffmpeg binary (not the _g version which has the debugging in it) as the new Plex Transcoder binary file.
On my Plex server machine I needed to install librtmp.
I also found I needed to manually build and install zlib-1.2.9 on my Plex server machine (specifically that version since the Fedora repo version is newer and won’t suffice). The source for 1.2.9 can be found here: Index of /fossils and the build process was simple and straight forward. Once the libz.so.1.2.9 binary was installed in the plex folder:
We run Plex Media Server and start a video that requires transcoding. And it fails. However, I do not see any missing dependency messages anymore in the system logs (after the above steps) and in fact there are no error messages in the system logs for Plex except a missing hybrid_drv_video.so library but that happens even with the official current version of Plex Transcoder that I have.
Even when I installed and linked the hybrid_drv_video.so file (provided by the libva-intel-hybrid-driver package) the message went away but the newly built Plex Transcoder still would not work and there were no system log warnings/errors for me to further attack.
There might be more info to go further in some Plex log files but that’s where I gave up.
One issue with all this that does concern me and makes me think the ffmpeg build process is flawed is the fact that the official Plex Transcoder is somewhere around 13MB and the one I built was 7.4MB. That’s a small absolute difference but big relatively speaking, and makes me think there are some things not being included in the build process somewhere.