Video Compression

VideoNerd

Content

Getting SVT-AV1 Sources

How Build SVT-AV1 in Windows

Running SVT-AV1 Encoder

Running SVT-AV1 Decoder

Note on Performance of SVT-AV1

How Run Encoding of 10 bits per pixel Raw Sequence?

SVT-AV1 with ffmpeg

 

Getting SVT-AV1 Sources

the new version 1.4.0 has been published:

git clone https://gitlab.com/AOMediaCodec/SVT-AV1

or alternatively you can download zip-sources 

 

How Build SVT-AV1 in Windows

there is build.bat file in the folder \Build\windows, for example if you have Visual Studio 2019 installed go to \Build\windows and type the following command to get Release exe-file:

build 2019 Release

The exe file SvtAv1EncApp.exe is created at the folder: Bin\Release\

Bin\Release\SvtAv1EncApp.exe

Bin\Release\SvtAv1DecApp.exe

Notice that the version 1.4.0 is much more faster.

 

Running SVT-AV1 Encoder

The binaries are not self-contained and require SvtAv1Enc.dll and SvtAv1Dec.dll, although one can build SvtAv1EncApp.exe and SvtAv1DecApp.exe as static.

To get all CLI parameters apply:   SvtAv1EncApp.exe --help 

Selected and most relevant SvtAv1EncApp.exe parameters:

General options:

-i                                    raw video file (y4m and yuv)
-b                                  output compressed (ivf) file
--preset                        encoder preset [0-13],  higher presets means faster encoding, default is 10, in the link you can learn what parameters each preset activate.
-w                                 frame width in pixels, inferred if y4m
-h                                 frame height in pixels, inferred if y4m
-n                                 number of frames to encode. default is 0 (until EOF)
--fps                            input video frame rate, integer values only, inferred if y4m, default is 25

--lp                              for parallel coding, the number of logical processors (I found switching from ‘--lp 1‘ to ‘--lp 8‘ makes encoding times twice)

--enable-tf                    enable temporal filtering of input frames, to disable type  --disable-tf

Rate Control Options:
--rc                             Rate control mode, default is 0 [0: CRF , 1: VBR, 2: CBR]
-q                               initial QP level value, default is 35 [1-63]
--crf                            constant Rate Factor value, setting this value is equal to `–rc 0 –aq-mode 2 –qp x`, default is 35 [1-63]
--tbr                           target Bitrate (kbps), only applicable for VBR and CBR encoding, default is 7000
--mbr                         peak bitrate (kbps) only applicable for CRF and VBR encoding, default is 0
--aq-mode                set adaptive QP level, default is 2 [0: off, 1: variance base using AV1 segments, 2: deltaq pred efficiency]

Multi-pass Options:
--pass                         multi-pass selection, pass 3 is only available for VBR, default is 0 [0: single pass encode, 1: first pass, 2: second pass, 3: third pass]
--stats                        filename for multi-pass encoding, default is “svtav1_2pass.log”
--passes                     number of encoding passes, default is preset dependent but generally 1 [1: one pass encode, 2: multi-pass encode]

GOP options:
--keyint                      GOP size (frames), -1: “infinite” , the argument of ‘keyint‘ can be provided in seconds: ‘--keyint 2s', i.e. frame_rate x 2
--irefresh-type             Intra refresh type, default is 2 [1: open GOP), 2: closed GOP]
--scd                            Scene change detection control, default is 0 [0-1]
--lookahead                number of frames in the future to look ahead, not including minigop, temporal filtering, and rate control, default is -1 [-1: auto, 0-120]
--pred-struct              set prediction structure, default is 2 [1: low delay frames, 2: random access]

AV1 Specific Options:
--tile-rows                        number of tile rows
--tile-columns                  number of tile columns n
--enable-dlf                      enable deblocking loop filter control, default is 1 [0-1]
--enable-cdef                    enable Constained Directional Enhancement Filter, default is 1 [0-1]
--enable-restoration       enable loop restoration filter, default is 1 [0-1]
--tune                                 specifies whether to use PSNR or VQ as the tuning metric [0 = VQ, 1 = PSNR], default is 1 [0-1]

 

Example [rate control vbr, bitrate 500kbps, peak bitrate 600kbps, gop length 50 frames, frame rate 25,

low-delay (--pred-struct 1)]

 

SvtAv1EncApp.exe -i .\yuv\akiyo_cif.y4m  --rc 1 --tbr 500 --mbr 600 --fps 25 --lp 8 --preset 8 --pred-struct 1 --keyint 50 --lookahead 1 --enable-restoration 0 -b akiyo.ivf

 

Example: input file is raw video in the format yuv420p (size 1920×1080), output webm, target bitrate 5Mbps, maximal bitrate 6Mbps, frame rate 50fps, low-delay mode:

SvtAv1EncApp.exe -i .\yuv\crowdrun1080p50fps.yuv -w 1920 -h 1080 --rc 1 --tbr 5000 --mbr 6000 --fps 50 --preset 8 --pred-struct 1 --keyint 50 --lookahead 1 --enable-restoration 0  -b crows.webm

note: the output file akiyo.ivf  is playable by ffplay and PotPlayer.

 

Running SVT-AV1 Decoder

Apply AV1 decoder SvtAv1DecApp.exe :

SvtAv1DecApp.exe -i akiyo.ivf  -bit-depth 8  -colour-space 420    -o test_cif.yuv

you can play yuv-file with ‘ffplay’ as follows:

ffplay -s 352×288 test_cif.yuv

 

Note on Performance of SVT-AV1

Jan Ozer reports in  “AV1 Has Arrived: Comparing Codecs from AOMedia, Visionular, and Intel/Netflix”  that SVT-AV1 in 2020, it was the worst of four AV1 alternatives.

There is another comparison report of OTT Verse – “Comparing SVT-AV1 Presets: Size, Quality, and Speed with CRF Variations

 

How Run Encoding of 10 bits per pixel Raw Sequence?

you can take 10bpp video from    https://media.xiph.org/video/derf/    , e.g. “Netflix_Tango“, use ' --input-depth 10'  (in old versions --bit-depth used):

Example [ 4K resolution, bitrate 15Mbps, peak bitrate 18Mbps, closed gops, tiling 2×2 ]

SvtAv1EncApp.exe -i  Netflix_Aerial_4096x2160_60fps_10bit.y4m  --rc 1 --tbr 15000 --mbr 18000 --fps 60 --preset 8 --pred-struct 1 --keyint 60 --irefresh-type 2 --input-depth 10 --tile-rows 2 --tile-columns 2     --lookahead 1 --enable-restoration 0 -b netflix.ivf

'--irefresh-type 2'  makes closed GOPs

 

SVT-AV1 with ffmpeg

Since 2022 ffmpeg supports SVT-AV1 encoder called ‘libsvtav1’ , you can take windows binary ffmpeg with libsvtav1 inside. 

ffmpeg -hide_banner -encoders | findstr av1

V….D libaom-av1 libaom AV1 (codec av1)
V….D librav1e librav1e AV1 (codec av1)
V….. libsvtav1 SVT-AV1(Scalable Video Technology for AV1) encoder (codec av1)

Example:

ffmpeg -y -i  akiyo_cif.y4m  -crf 20  -preset 9 -g 30 -svtav1-params fast-decode=1:lp=1 -threads 1 -c:v libsvtav1 -f webm akiyo.webm

-preset 9            fast mode  (1 – slowest mode, 11 – fastest)

fast-decode=1  facilitate fast decoding

lp=1                  single logical processor (corresponding to ‘threads 1’)

16 Responses

  1. Hi this is kinda of off topic butt I was wanting to know
    if blogs usee WYSIWYG editors or if yyou have to manually code with HTML.
    I’m starting a blog soon but have no coding experience so I wanted to get guidance
    from someone with experience. Any help would be enormously appreciated!

    My web page: kamagra generico prezzo

  2. An outstanding share! I have just forwarded this onto a colleague who had been doing a little research on this. And he in fact ordered me dinner simply because I stumbled upon it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanks for spending the time to discuss this subject here on your web site.

  3. When I initially commented I clicked the -Notify me when new feedback are added- checkbox and now each time a comment is added I get 4 emails with the same comment. Is there any manner you’ll be able to remove me from that service? Thanks!

    1. i regret but it’s not my intention to flood readers by spam. i suggest to block the site. Anyway, the site will be closed in a half of year.

  4. Hey, you used to write magnificent, but the last several posts have been kinda boringK I miss your super writings. Past few posts are just a little bit out of track! come on!

  5. What i do not realize is actually how you are not really much more well-liked than you might be right now. You are very intelligent. You realize therefore significantly relating to this subject, made me personally consider it from numerous varied angles. Its like men and women aren’t fascinated unless it is one thing to accomplish with Lady gaga! Your own stuffs excellent. Always maintain it up!

  6. You actually make it appear so easy with your presentation but I find this topic to be actually something that I think I’d by no means understand. It seems too complex and very huge for me. I’m having a look forward to your next post, I will try to get the hold of it!

  7. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across. It extremely helps make reading your blog significantly easier.

Leave a Reply

Your email address will not be published. Required fields are marked *