What is -crf used for in ffmpeg
When converting an array of jpegs to a video file (ogg format) I have been using the -crf option. What are the valid ranges for -crf? Currently I am using 23.
I cannot find the bookmark I read to know what this flag does and I have spent some time Googling around.
These are the arguments I am using at the moment:
-f image2 -r 10 -i " + _sourcePath + @"\img%05d.jpg -crf 18 -y -r 10 " + _destPath + "\\" + _filename + ".ogg"
That refers to the Constant Rate Factor (crf
).
As others have pointed out (Thanks all), the values will depend on which encoder you're using.
For x264 your valid range is 0-51
:
The range of the quantizer scale is 0-51: where 0 is lossless, 23 is default, and 51 is worst possible. A lower value is a higher quality and a subjectively sane range is 18-28. Consider 18 to be visually lossless or nearly so: it should look the same or nearly the same as the input but it isn't technically lossless.
For vpx the range is 4-63
(as @sebastian-hoffner answered):
By default the CRF value can be from 4–63, and 10 is a good starting point. Lower values mean better quality.
In both cases, a lower value means higher quality. In my experience, I see x264 much more often.
Slhck's shameless plug (an SU mod) link looks like it has some good info.
The crf flag ensures a variable bitrate for constant quality, if I understand the page linked below correctly. The default range is from 4 to 63, but it can be tweaked further.
Have a look at https://trac.ffmpeg.org/wiki/Encode/VP9 for more information.