[FFmpeg-trac] #9610(ffmpeg:new): Sane defaults and full parameters for SVT AV1
FFmpeg
trac at avcodec.org
Sun Jan 23 20:30:07 EET 2022
#9610: Sane defaults and full parameters for SVT AV1
-------------------------------------+-------------------------------------
Reporter: gvfarns | Type:
| enhancement
Status: new | Priority: normal
Component: ffmpeg | Version:
Keywords: av1 | unspecified
,libsvtav1 | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
With the release of SVT AV1 0.9, SvtAv1 has made tremendous encoding speed
progress while retaining quality and now competes with and surpasses
frequently used encoders like h.265. Yet it cannot be effectively used
directly within ffmpeg because, apparently, one cannot specify the
necessary options to get a good encode (see this post on reddit:
https://www.reddit.com/r/AV1/comments/r9x4ea/comment/hnftcy5/?utm_source=share&utm_medium=web2x&context=3).
That thread suggests that there are no options for SvtAv1, which does not
seem to be the case with ffmpeg 4.4.1. However, it does seem to be the
case that not all important options are available. For example, `film-
grain` and `keyint`. It would be great if the next version of ffmpeg had
the capability of controlling the most important parameters in SvtAv1 and
had default values that result in good encodes so that if people just
specify libsvtav1 as their encoder without specifying any additional
parameters, they will be happy with the result.
Here is an example of the current way to get a good encode with SvtAv1:
{{{
% ffmpeg -i Infile.mp4 -map 0:v:0 -pix_fmt yuv420p10le -f yuv4mpegpipe
-strict -1 - | SvtAv1EncApp -i stdin --preset 6 --keyint 240 --input-
depth 10 --crf 30 --rc 0 --passes 1 --film-grain 0 -b Outfile.ivf
% ffmpeg -i Outfile.ivf -i Infile.mp4 -map 0:v -map 1:a:0 -c:v copy -c:a
copy FinalProduct.mp4
}}}
Note the 10 bit input depth and a sane keyint value (approximately 10x the
fps). The three most important parameters for the user to control are
`preset`, `crf`, and `film-grain`.
The world would be a better place if we could get the result from the
above by doing
{{{
ffmpeg -i Input.mp4 -c:v libsvtav1 --preset 6 --crf 30 --film-grain 10
-c:a copy Output.mp4
}}}
or something similar. I believe that being able to use ffmpeg effectively
for SvtAv1 encodes in this manner would substantially improve the uptake
of this highly efficient, open, and html5-compatible codec by debunking
the pervasive idea that encoding to AV1 is not feasible because of long
encode-time.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9610>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list