[FFmpeg-user] VBR encoding for libsvtav1.
Aditya Dandavate
adityadandavate04 at gmail.com
Sun Nov 26 15:51:06 EET 2023
On Sun, 26 Nov, 2023, 6:44 pm Ferdi Scholten, <ferdi at sttc-nlp.nl> wrote:
> I was trying and searching the web to 'how to encode videos with libsvtav1
> > with help of VBR rate control mode and I found on this page that setting
> > -rc 1 will enable Variable Bitrate mode.
> >
> >
> >
> https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/svt-av1_encoder_user_guide.md
> >
> >
> > I tried to set '-rc 1' but the it says :
> >
> > `[out#0/nut @ 00000208aba3eac0] Codec AVOption rc (Override the preset
> > rate-control) has not been used for any stream. The most likely reason is
> > either wrong type (e.g. a video option with no video streams) or that it
> is
> > a private option of some encoder which was not actually used for any
> > stream.`
> >
> > So, how to encode videos with Variable Bitrate rate control mode with
> > libsvtav1 encoder ? I need help from you guys about this.
> Please supply full command you have tried AND full output of that
> command. We cannot help without those.
>
Video capture encoding settings
*cap_soundcommand* "ffmpeg -f s16le -ar %s -ac 2 -i - -c:a libvorbis -q:a
10 -y temp_a.nut"
*cap_videocommand* "ffmpeg -f rawvideo -pix_fmt rgb24 -r %r -s %wx%h -i -
-c:v libsvtav1 -preset 10 -crf 20 -b:v 5000k -rc 1 -y temp_v.nut"
*cap_muxcommand* "ffmpeg -i temp_v.nut -i temp_a.nut -c copy -y %f"
cap_tempfile1 "temp_a.nut"
cap_tempfile2 "temp_v.nut"
cap_remove_tempfiles 1
cap_wipescreen 0
cap_fps 60
These settings actually are viddumping settings in the clg file of
DSDA-Doom source port. (i.e they are used to convert Doom demos i.e lmp
files to videos).
I store the video and audio in webm format since webm supports Vorbis and
Av1 codecs.
Output of the command:
ffmpeg version 6.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the
FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static
--pkg-config=pkgconf --disable-w32threads --disable-autodetect
--enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2
--enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy
--enable-zlib --enable-librist --enable-libsrt --enable-libssh
--enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca
--enable-sdl2 --enable-libaribb24 --enable-libaribcaption
--enable-libdav1d --enable-libdavs2 --enable-libuavs3d
--enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid
--enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx
--enable-mediafoundation --enable-libass --enable-frei0r
--enable-libfreetype --enable-libfribidi --enable-libharfbuzz
--enable-liblensfun --enable-libvidstab --enable-libvmaf
--enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid
--enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2
--enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan
--enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme
--enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb
--enable-libmp3lame --enable-libshine --enable-libtheora
--enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2
--enable-libilbc --enable-libgsm --enable-libopencore-amrnb
--enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa
--enable-libbs2b --enable-libflite --enable-libmysofa
--enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, rawvideo, from 'fd:':
Duration: N/A, start: 0.000000, bitrate: 2985984 kb/s
Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24,
1920x1080, 2985984 kb/s, 60 tbr, 60 tbn
[out#0/nut @ 00000208aba3eac0] Codec AVOption rc (Override the preset
rate-control) has not been used for any stream. The most likely reason
is either wrong type (e.g. a video option with no video streams) or
that it is a private option of some encoder which was not actually
used for any stream.
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> av1 (libsvtav1))
Svt[info]: -------------------------------------------
Svt[info]: SVT [version]: SVT-AV1 Encoder Lib v1.7.0-3-g2f003458
Svt[info]: SVT [build] : GCC 13.2.0 64 bit
Svt[info]: LIB Build date: Nov 5 2023 14:07:04
Svt[info]: -------------------------------------------
Svt[info]: Number of logical cores available: 2
Svt[info]: Number of PPCS 42
Svt[info]: [asm level on system : up to sse4_2]
Svt[info]: [asm level selected : up to sse4_2]
Svt[info]: -------------------------------------------
Svt[info]: SVT [config]: main profile tier (auto) level (auto)
Svt[info]: SVT [config]: width / height / fps numerator / fps
denominator : 1920 / 1080 / 60 / 1
Svt[info]: SVT [config]: bit-depth / color format : 8 / YUV420
Svt[info]: SVT [config]: preset / tune / pred struct : 10 / PSNR
/ random access
Svt[info]: SVT [config]: gop size / mini-gop size / key-frame type
: 321 / 16 / key frame
Svt[info]: SVT [config]: BRC mode / rate factor : CRF / 20
Svt[info]: -------------------------------------------
Output #0, nut, to 'temp_v.nut':
Metadata:
encoder : Lavf60.16.100
Stream #0:0: Video: av1 (AV01 / 0x31305641), yuv420p(tv,
progressive), 1920x1080, q=2-31, 60 fps, 61440 tbn
Metadata:
encoder : Lavc60.31.102 libsvtav1
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=0.0 size= 0kB time=N/A bitrate=N/A speed=N/A
frame= 0 fps=0.0 q=2.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
frame= 1 fps=0.1 q=2.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
frame= 1 fps=0.1 q=2.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
frame= 5 fps=0.6 q=20.0 size= 256kB time=00:00:00.08
bitrate=25165.9kbits/s speed=0.0096x
frame= 9 fps=1.0 q=20.0 size= 256kB time=00:00:00.15
bitrate=13981.0kbits/s speed=0.016x
frame= 10 fps=1.0 q=18.0 size= 256kB time=00:00:00.16
bitrate=12582.9kbits/s speed=0.0163x
frame= 14 fps=1.3 q=18.0 size= 256kB time=00:00:00.23
bitrate=8987.8kbits/s speed=0.0214x
frame= 17 fps=1.5 q=7.0 size= 256kB time=00:00:00.26
bitrate=7864.3kbits/s speed=0.0231x
frame= 21 fps=1.6 q=20.0 size= 256kB time=00:00:00.35
bitrate=5991.9kbits/s speed=0.0269x
frame= 24 fps=1.8 q=9.0 size= 256kB time=00:00:00.40
bitrate=5242.9kbits/s speed=0.0296x
frame= 27 fps=1.9 q=20.0 size= 512kB time=00:00:00.45
bitrate=9320.7kbits/s speed=0.032x
frame= 34 fps=2.3 q=18.0 size= 512kB time=00:00:00.56
bitrate=7401.7kbits/s speed=0.0387x
frame= 37 fps=2.3 q=20.0 size= 768kB time=00:00:00.61
bitrate=10202.4kbits/s speed=0.0386x
(I stopped the encoding forecfully when I saw the message about -rc in
the video_stderr txt file.)
More information about the ffmpeg-user
mailing list