March 26, 2024

libaom-av1 and SVT-AV1 transcoding setup with Nimble Streamer

AV1 format is a promising solution for high-quality efficient video compression.

Now with Nimble Streamer support for AV1, streaming services can easily adopt this advanced format to deliver high-quality content. Adding another significant piece into AV1 support, here we describe the transcoding options available for Nimble Streamer Live Transcoder: SVT-AV1 and libaom-av1 encoders are now supported via the respective FFmpeg encoder option.

Prerequisites

Before using the Transcoder for Nimble Streamer, you must have a basic subscription to WMSPanel and a Transcoder license. Please find more details on installing and registering an instance of Transcoder on the following installation page. You should also have a basic knowledge of Live Transcoder setup, please refer to our documentation reference.

1. Decoding AV1 received streams


AV1 streams are supported as video input, and no extra setup steps are required. Just drag Video Source to a timeline, and specify the name of a stream for decoding. After that any of the Transcoder’s filters can be used on the stream.

2. Encoding with libaom-av1


Specifying libaom-av1 for encoding is not much different from any other encoders. Add the Video output to a timeline, name the output application, and stream, and then select FFmpeg as the encoder. Next, type in libaom-av1 in a Codec field. Once you click OK and then Save the scenario, the settings will be applied and you will get the output stream in AV1 format.



Here are the parameters you can use for it

2.1 libaom-av1 constant quality 

To set constant quality for the encoding process, fill in parameters as ‘crf’ and then the number in the option field.


Accepted values are 0-63. Lower values = better quality, 0 = lossless. CRF 23 ≈ x264 CRF 19 (visually lossless).

This mode ensures that each frame receives the appropriate number of bits to maintain a consistent quality level. It is set the same way as for x264 or x265.

2.2 libaom-av1 constrained quality


This one maintains desired video quality (set with ‘crf’ option) while targeting a bitrate limit (‘b’). Use for consistent encoding with a bitrate cap.


The ‘b’ value must not be 0.
Alternatively, you may specify the minimum and maximum bitrate range instead of the ‘crf’ option:


Notice that this mode doesn’t mean setting strict limits for output bitrate, and it can be even higher than  the input depending on the source’s data.
That’s a frequent question to our support team along with the question if the bitrate is specified via the ‘b’ param only (even if no ‘crf’ or ‘minrate’/’maxrate’ is set) and expected to be strictly constant.

2.3 libaom-av1 keyframe control


By default, the Transcoder suggests encoders to use keyframes as set by the ‘Keyframe alignment’ option. 
You may force keyframes via the encoder parameters also. The ‘g’ parameter can be used to set the maximum keyframe interval.
To get a fixed Interval specify both ‘g’ and ‘keyint_min’ to the same value. 
To force all frames as keyframes use ‘g’ as  ‘0’.


You can find more information about libaom-av1 on this page.

3. Encoding with SVT-AV1


SVT-AV1, also known as libsvtav1, is a video encoder that Intel and Netflix created together. In 2020, the Alliance for Open Media (AOMedia) chose it to lead the way for AV1's development and future video codecs. It's also supported by Nimble Streamer Transcoder.

To specify SVT-AV1 encoding, add Video Ouput, name the application, and stream for the output, choose FFmpeg as encoder and type ‘libsvtav1’ in the Codec field.



As you click ‘Ok’ and then ‘Save’ in the scenario window, you will receive AV1 output produced by libsvtav1 codec.

Here are some additional parameters to consider.

3.1 SVT-AV1 CRF


The 'crf' parameter ensures each frame receives the appropriate number of bits to maintain a consistent quality level.  It is set the same way as for x264 or x265, or as described above for libaom-av1.
Accepted values are 0-63. The default value is 35. Choosing a lower CRF value results in higher video quality and a higher bitrate. Encoding in a completely lossless mode is not supported at the moment.

3.2 SVT-AV1 Presets


In SVT-AV1, the ‘preset’ option is used to balance encoding speed with compression efficiency. There are 14 presets available, numbered 0 to 13, where higher numbers mean faster encoding. 



3.3 Additional options with SvtAv1Params


There are some additional options you may want to try with the SVT-AV1 encoder for getting either faster encoding or better quality.

They are listed in the section ‘Usage of SvtAv1Params’ on the following documentation page.

Here we describe, how to apply it in Nimble Transcoder.

Type in ‘svtav1-params’ as a parameter of Video Output in the encoder settings. Set the value of the desired SVT-AV1 parameter and its value in an options input. You may chain several options via semicolons like ‘option1=value1:option2=value2…’



In the screenshot, we showed how to enable the ‘fast-decode’ option and the ‘tune’ option set to Visual Quality (0). The option string is ‘fast-decode=1:tune=0

You may find additional info about SVT-AV1 on this page.


In conclusion, the arrival of AV1 encoding offers new capabilities with its superior compression, royalty-free nature, and high-resolution support. While processing power for encoding might be higher, the long-term benefits – from reduced bandwidth costs to exceptional video quality – make AV1 a future-proof investment for the live-streaming video landscape. Don’t hesitate to evaluate it right now with Nimble Streamer Transcoder.

No comments:

Post a Comment

If you face any specific issue or want to ask some question to our team,
PLEASE USE OUR HELPDESK

This will give much faster and precise response.
Thank you.

Note: Only a member of this blog may post a comment.