Video Production Asked on October 28, 2021
Encoding on CPU can be done via:
ffmpeg -i input.mp4 -vcodec h264 -crf 23 -acodec copy h264.mp4
GPU’s alternative for the codec is h264_nvenc
. How can I pass the same options to it?
I googled and came to following command:
ffmpeg -i input.mp4 -vcodec h264_nvenc -rc constqp -qp 23 -acodec copy h264_nvenc.mp4
But the file I get is much larger. And with other options quality is much worther.
from reading:
ffmpeg -h encoder=h264_nvenc
and the nvidia nvenc examples at (https://devblogs.nvidia.com/nvidia-ffmpeg-transcoding-guide/), I've arrived at:
ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i test_input.mp4 -c:a copy -c:v h264_nvenc -b:v 0 -cq 1 test3.mp4
where:
-b:v 0 over-rides the default 2mbps bitrate as noted by Gyan
-cq 1 means target quality level 1 (highest)
range of 0-51.
0 means automatic (in my case around 15mbps)
1 gives about 15mbps, 26 results in around 5mbps, 51 results in 0.5mbps
Answered by jjisnow on October 28, 2021
If you don't specify bit rate yourself, FFmpeg will assume a default bit rate of 256 kbits, you have to unset it with -b:v 0
.
Answered by Awa on October 28, 2021
CRF != CQP. The former may have variable QP but tries to maintain quality. CQP is a cruder form of rate-control.
For nvenc, use -rc vbr_hq -qmin 0
and add -cq X
where X sets a quality level; range is 0-51. Smaller is better.
Answered by Gyan on October 28, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP