Just to get this out of the way This is not a thread asking why we aren't supporting it.
I have a fairly good understanding of why it isn't currently supported, but I have some questions I hope a dev or even elan can answer as in the last few weeks the landscape seems to have shifted from a "not possible" to both emby and ffmpeg having some interesting developments. So anyway here goes.
I've been watching the EMBY (MB3) forums a LOT over the last few weeks/months as there have been some interesting developments with GPU support for transcoding. A few weeks or month back the community was able to get Intel's QuickSync and Nvidia's NVENC working with the stock ffmpeg build that emby uses. They're working working on a straight up GPU transcode too but that looks to be a ways off. The relevant threads can be found here
The ffmpeg team has recently added support for this if I remember correctly as well. I don't remember the link and I'm having trouble finding it at the moment.
Should the Plex dev team NOT be aware of these developments, is this something that would potentially be feasible on our side of the pond? Not looking for a commitment to a feature or an ETA but rather wonder if this is something you guys could look into and maybe incorporate into your internal roadmap at some point.
I’ll take a stab at it since I’ve been working on this and have been following progress of using different software packages to do the job.
In a nut shell ffmpeg does NOT support QS encoding in any official release. You can compile it yourself with QS support (same for other hardware).
HOWEVER, when using hardware assist/offloading ffmpeg still uses just about the same amount of CPU as it does when not using hardware. It’s also SLOWER than running ffmpeg with the SUPER FAST option (what plex and emby use for real-time transcoding).
It’s great that progress is being made but right now it’s just not close to prime-time yet. The architecture of ffmpeg doesn’t lend itself well to integration of hardware at present.
Once ffmpeg has an official release of ffmpeg that does better than software (speed or lower CPU use) transcoding for real-time use then I’m sure both Emby and Plex will make use of it!
@cayars said:
I’ll take a stab at it since I’ve been working on this and have been following progress of using different software packages to do the job.
In a nut shell ffmpeg does NOT support QS encoding in any official release. You can compile it yourself with QS support (same for other hardware).
HOWEVER, when using hardware assist/offloading ffmpeg still uses just about the same amount of CPU as it does when not using hardware. It’s also SLOWER than running ffmpeg with the SUPER FAST option (what plex and emby use for real-time transcoding).
It’s great that progress is being made but right now it’s just not close to prime-time yet. The architecture of ffmpeg doesn’t lend itself well to integration of hardware at present.
Once ffmpeg has an official release of ffmpeg that does better than software (speed or lower CPU use) transcoding for real-time use then I’m sure both Emby and Plex will make use of it!
Carlo
Not sure if you are getting those numbers from actual testing or just research. But the user that got Intel QuickSync working in MB3 was seeing much better results.
For instance he is running a low powered quad-core atom J1900 CPU that scores under 2000 on the Passmark CPU benchmark. It probably can’t even transcode 1 x 1080P stream in real-time using CPU only.
Using QuickSync he was able to transcode 1 x 1080P stream at 70 FPS.
Also he was also able to transcode 3 x 1080P streams at 75 FPS (25 per stream) without issue.
Some newer/higher end CPUs w/ Intel QS can do 1 x 1080P steam at 250 FPS. That would be good for 8 x 1080P streams at 30 FPS.
I haven’t seen the testing you are referring to but you cannot just look at resolution. You really need to look at bitrate. If that tester was using a 2Mbps 1080p file, sure, that will work. Non-QS encoding on a cpu with a passmark of 2000 can easily handle that, possibly even at 70 fps. If the source file was a 30Mbps BR rip and it was encoding down to 10Mbps and it ran at 70 fps, that would be impressive.
@bjd223 said:
Some newer/higher end CPUs w/ Intel QS can do 1 x 1080P steam at 250 FPS. That would be good for 8 x 1080P streams at 30 FPS.
Take a look at the forum/thread you are posting this in reference to and then look for my username there. You’ll see I was there too and working on part of the solution and testing.
The problem isn’t QS but it’s implementation via ffmpeg. You can’t compare the results of one program to that of another. ffmpeg does things differently then other programs, So comparing ffmpeg QS to ffmpeg non QS doesn’t get you the kind of performance you need to make this worth while (yet).
I just built ffmpeg with dxva2 and nvenc enabled, and hello future…
Converting a ~20Mbps 1080p source down to 5Mbps, my i7 4770k manages ~110 fps with x264 and veryfast, using 100% CPU.
With dxva2 and nvenc I get ~250 fps with ~20% CPU.
I didn’t do a detailed inspection but resulting files look very similar quality wise, with the GPU encoded one looking slightly better. It retained high-frequency details better at a lower file size, at least for this test.
I understand the problems with redistributing nvenc-enabled ffmpeg, which is a shame. Hardware transcoding really spices things up.
@cayars said:
Cool. now that I go back and read what you wrote I do read it that way. Sorry about that.
No problem
@vanstinator said:
I can’t wait until this someday is a part of Plex. I’d stop looking at new processors as my GPU is more than capable (probably).
At least for NVENC it’s a separate chip, so if you have an NVIDIA card with it, then it should be just as capable as any other card with it.
Haven’t studied the details of how AMD does it.
I tested h265 (HEVC) as well, got about ~180 fps, though at a somewhat higher CPU usage (30-40%). For the same bitrate it had noticeably better quality though (which is kinda the point).
@cayars said:
Cool. now that I go back and read what you wrote I do read it that way. Sorry about that.
No problem
@vanstinator said:
I can’t wait until this someday is a part of Plex. I’d stop looking at new processors as my GPU is more than capable (probably).
At least for NVENC it’s a separate chip, so if you have an NVIDIA card with it, then it should be just as capable as any other card with it.
Haven’t studied the details of how AMD does it.
I tested h265 (HEVC) as well, got about ~180 fps, though at a somewhat higher CPU usage (30-40%). For the same bitrate it had noticeably better quality though (which is kinda the point).
This is the nice part about hardware accelerated video. The cheapest Intel CPU with QS, has the same hardware as the most expensive one with QS within the same generation. The slowest Haswell CPU has the same QS hardware as the fastest one. Obviously the faster CPU may have more on die cache, etc. which increases the perf of QS, but you still get a great experience with the low-end CPUs.
The only caveat to this, is on the higher end nVidia Quadro cards, which have more then one NVENC engine on them, also they allow for more than 2 streams at once.