Srinjoy Choudhury
Srinjoy Choudhury

Reputation: 831

Ffmpeg nvenc encoder on gpu does not compress files as much as compared to libx264

I wanted to encode a video file which was initially encoded by a libx264 encoder on a non gpu machine with ultrafast preset and crf 23 , i typically re-encode it with preset medium and get a good compression but the process is very slow , so i am considering a gpu based solution

my current command to use ffmpeg on a nvidia turing gpu

ffmpeg -y -vsync passthrough -hwaccel cuda -i a.mp4 -max_muxing_queue_size 9999 -pix_fmt yuv420p -c:v h264_nvenc -preset medium -tune ll -b:v 4M -bufsize 4M -maxrate 10M -qmin 0 b.mp4

usual command i use to do the same

ffmpeg -i a.mp4 -max_muxing_queue_size 9999 -pix_fmt yuv420p -c:v libx264 -preset medium b.mp4
enter code here

How can i make this command do a better job at reducing file size , i am okay to compromise on the quality of the video for a good reduction in size

Upvotes: 0

Views: 3215

Answers (1)

hotenov
hotenov

Reputation: 1143

I would highly recommend reading this H.264 Video Encoding Guide

On the surface, these variants can help you:

  • Decrease your bitrate
  • Add -cq option with suitable value 0-51 (-cq for h264_nvenc is pretty the same as -crf for libx264)
  • Change -tune option value to hq
  • Try two-pass encoding (if you know desired output file size), but here is very low benefit

If you struggle with available options for h264_nvenc you can see the whole list of them by executing following command:

ffmpeg -hide_banner -h encoder=h264_nvenc

Most of them are self descriptive or similar from libx264

Upvotes: 0

Related Questions