videoffmpegcommand-line-interfacegpuvideo-conversion

FFMPEG command line not using GPU when compressing MP4 file


Hey all I have been working on a good command line string to use for my movies that I would like to trim the size down to at least half the current size.

My handbrake information regaurding my GPU and computer system is this:

HandBrake 1.5.1 (2022011000)
OS: Microsoft Windows NT 10.0.19043.0
CPU: Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz (12 Cores, 24 Threads)
Ram: 40940 MB, 
GPU Information:
  Microsoft Remote Display Adapter - 10.0.19041.662
  NVIDIA Tesla K10 - 30.0.14.7141
  NVIDIA Tesla K10 - 30.0.14.7141
  Microsoft Basic Display Adapter - 10.0.19041.868

When I originally made a command line, I was just using it to copy the file over to where it needed to go with the following:

ffmpeg -y -hide_banner -threads 8 -hwaccel cuda -hwaccel_device 1 -hwaccel_output_format cuda -v verbose -i "c:\testingvids\AEON FLUX 2005.mp4" -c:v h264_cuvid -gpu:v 1 -preset slow -c copy "c:\testingvids\AEON FLUX 2005 nvidia.mp4"

This produced a 828x processing speed:

enter image description here

But for taking that same file and compressing it I seem to only get a ~8x speed?

enter image description here

So that is quite a difference there. Am I using the correct syntax for it to only use my GPU to convert/compress the mp4 with the h264 nvenc?


Solution

  • IMO, the performance is pretty much what you'd expect from a 10-year-old GPU. If you check this link and show only the results of "GK104 - Kepler (1st Gen)" and the performance is around 5 fps. Tesla K10 has x2 GK104 onboard, so roughly double that figure 10 fps (minus the scaling loss) gets you the number you are getting.

    Also, you should compare the GPU performance to a comparable CPU encoding performance and not copying. Run FFmpeg with -c:v libx264 (which is the default encoder for MP4) and find out what kind of FPS your dual CPUs run at. Then, pick the more powerful of the two.

    Side note: I found out my old low-end GPU (GTX 750 Ti from around 2014) has no business encoding videos over a more recent mid-range Ryzen 3600 CPU (2020). So, GPU does not always encode faster than CPU when your system is unbalanced like mine.