FFMPEG and HW acceleration - capability guide

Here is the definitive guide from the FFMPEG developers as to the really complicated HW acceleration support available in the current FFMPEG (version 6, in mid 2023).

https://trac.ffmpeg.org/wiki/HWAccelIntro

Keep in mind that with MCEBuddy, there is a standalone version of FFMPEG used by MCEBuddy for transcoding. Note that this, by definition, means that there is a decoding operation going on with the output going straight into an encoding operation. And whether either is using the GPU or not isn’t always clear, and they are entirely separate things.

In the alternative, MCEBuddy can use Handbrake for this. However, Handbrake has its own version of FFMPEG baked in and it will not use the separate FFMPEG.

The same applies to Comskip, it also has its own version of FFMPEG baked in that it uses. Comskip only does decoding. So if your Comskip isn’t using GPU acceleration, it may not be possible, or it could be that CPU decoding is just as fast - that’s kind of the point with playback (decoding).

So, in general, it isn’t simple or clear to know exactly what features each separate version of FFMPEG is supporting or capable of or even if MCEBuddy can invoke the proper options - like when using the latest donator Comskip, the nVidia GPU options can only be manually invoked on the command line. And the options don’t exist in the donator version that comes with MCEBuddy.

So I recommend looking carefully at the FFMPEG Hwaccel developer guide, know what CPU and GPU you have, which codecs (decode too - not just encode!) you’re using to really understand what that “hwaccel” option means - what it does do and more importantly what it doesn’t do, and set expectations accordingly.

What works on one server may not work the same on a different server with different CPUs and GPUs and Operating Systems. So, YMMV.

2 Likes

Thank you for sharing this information and advice regarding FFMPEG’s hardware acceleration capabilities and its usage within different software applications like MCEBuddy, Handbrake, and Comskip. You’ve highlighted the complexity and variability in hardware acceleration support, making it clear that the effectiveness of these features can vary depending on the specific hardware, codecs, and software versions being used.

A cool thing here is that MCEBuddy will automatically analyze the graphics cards/drivers capabilities and tries to match the hardware acceleration (for encoding and decoding separately) to the systems’ capabilities and the codecs involved in the profile (custom or stock, including handling multiple graphics cards).
If you aren’t happy with the plug n play option, you still have the option to create highly customized profiles that are tuned for your systems hardware acceleration, which MCEBuddy won’t try to further optimize. Check the advanced commands topic for more details, specifically the UsingHardwareEncoding option on how to create such customized profiles.