AV1 Encoders¶
Video Capture SDK .Net Video Edit SDK .Net Media Blocks SDK .Net
VideoCaptureCoreX VideoEditCoreX MediaBlocksPipeline
VisioForge supports multiple AV1 encoder implementations, each with its own unique features and capabilities. This document covers the available encoders and their configuration options.
Currently, AV1 encoder are supported in the cross-platform engines: VideoCaptureCoreX, VideoEditCoreX, and Media Blocks SDK.
Not available on iOS
AV1 encoding is not available on iOS. Apple ships no AV1 hardware encoder on any chip, and the software AV1 encoders are not part of the iOS redistributable. AV1 decoding works on iOS - through VideoToolbox on A17 Pro and later, and through the software dav1d decoder everywhere else.
Available Encoders¶
- AMD AMF AV1 Encoder (AMF)
- NVIDIA NVENC AV1 Encoder (NVENC)
- Intel QuickSync AV1 Encoder (QSV)
- AOM AV1 Encoder
- RAV1E Encoder
- SVT-AV1 Encoder
The SVT-AV1 encoder is delivered in the additional runtime package for your platform - the VisioForge.CrossPlatform.Core.Windows.Adds.* package for your architecture, VisioForge.CrossPlatform.Core.macOS.Adds (2026.8.25 or newer) or VisioForge.CrossPlatform.Core.macCatalyst.Adds (2026.8.26 or newer) - which is referenced beside the core package. Without it AV1EncoderBlock.IsAvailable(new SVTAV1EncoderSettings()) returns false.
The AOM AV1 encoder is available on macOS, macCatalyst, and Linux. It is a quality-first software encoder intended for offline encoding; for the usual software AV1 workflow, prefer SVT-AV1 because it is substantially faster and scales better across CPU cores.
The VisioForge.CrossPlatform.Core.macOS.Adds and VisioForge.CrossPlatform.Core.macCatalyst.Adds packages include the required AOM runtime from 2026.8.30 onwards. On Linux, install a GStreamer runtime that provides the av1enc element; use AOMAV1EncoderSettings.IsAvailable() to check the active runtime.
You can use AV1 encoder with WebM output or for network streaming.
AMD AMF AV1 Encoder¶
The AMD AMF AV1 encoder provides hardware-accelerated encoding using AMD graphics cards.
Features¶
- Multiple quality presets
- Variable bitrate control modes
- GOP size control
- QP (Quantization Parameter) control
- Smart Access Video support
Rate Control Modes¶
Default: Depends on UsageCQP: Constant QPLCVBR: Latency Constrained VBRVBR: Peak Constrained VBRCBR: Constant Bitrate
Sample Usage¶
var encoderSettings = new AMFAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
GOPSize = 30, // GOP size of 30 frames
Preset = AMFAV1EncoderPreset.Quality, // Quality preset
RateControl = AMFAV1RateControlMode.VBR, // Variable Bitrate mode
Usage = AMFAV1EncoderUsage.Transcoding, // Transcoding usage
MaxBitrate = 5000, // 5 Mbps max bitrate
QpI = 26, // I-frame QP
QpP = 26, // P-frame QP
RefFrames = 1, // Number of reference frames
SmartAccessVideo = false // Smart Access Video disabled
};
NVIDIA NVENC AV1 Encoder¶
NVIDIA's NVENC AV1 encoder provides hardware-accelerated encoding using NVIDIA GPUs.
Features¶
- Multiple encoding presets
- Adaptive B-frame support
- Temporal AQ (Adaptive Quantization)
- VBV (Video Buffering Verifier) buffer control
- Spatial AQ support
Rate Control Modes¶
Default: Default modeConstQP: Constant Quantization ParameterCBR: Constant BitrateVBR: Variable BitrateCBR_LD_HQ: Low-delay CBR, high qualityCBR_HQ: CBR, high quality (slower)VBR_HQ: VBR, high quality (slower)
Sample Usage¶
var encoderSettings = new NVENCAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
Preset = NVENCPreset.HighQuality, // High quality preset
RateControl = NVENCRateControl.VBR, // Variable Bitrate mode
GOPSize = 75, // GOP size of 75 frames
MaxBitrate = 5000, // 5 Mbps max bitrate
BFrames = 2, // 2 B-frames between I and P
RCLookahead = 8, // 8 frames lookahead
TemporalAQ = true, // Enable temporal AQ
Tune = NVENCTune.HighQuality, // High quality tuning
VBVBufferSize = 6000 // 6000k VBV buffer
};
Intel QuickSync AV1 Encoder¶
Intel's QuickSync AV1 encoder provides hardware-accelerated encoding using Intel GPUs.
Features¶
- Low latency mode support
- Configurable target usage
- Reference frame control
- Flexible GOP size settings
Rate Control Modes¶
CBR: Constant BitrateVBR: Variable BitrateCQP: Constant Quantizer
Sample Usage¶
var encoderSettings = new QSVAV1EncoderSettings
{
Bitrate = 2000, // 2 Mbps
LowLatency = false, // Standard latency mode
TargetUsage = 4, // Balanced quality/speed
GOPSize = 30, // GOP size of 30 frames
MaxBitrate = 4000, // 4 Mbps max bitrate
QPI = 26, // I-frame QP
QPP = 28, // P-frame QP
RateControl = QSVAV1EncRateControl.VBR, // Variable Bitrate mode
RefFrames = 1 // Number of reference frames
};
AOM AV1 Encoder¶
The Alliance for Open Media (AOM) AV1 encoder is a software-based reference implementation. It prioritizes compression efficiency and detailed AV1 controls over encoding speed, so it is best suited to offline output rather than live capture or streaming.
Features¶
- Buffer control settings
- CPU usage optimization
- Frame dropping support
- Multi-threading capabilities
- Super-resolution support
Rate Control Modes¶
VBR: Variable Bit Rate ModeCBR: Constant Bit Rate ModeCQ: Constrained Quality ModeQ: Constant Quality Mode
Rate control only works while MaxQuantizer leaves the encoder room to spend fewer bits. It defaults to 63, the highest quantizer AV1 has; lowering it puts a quality floor under the stream, and at 0 the encoder ignores TargetBitrate and every buffer and overshoot setting. TargetBitrate defaults to 0, which means the encoder scales its own default to the frame size (256 Kbps at 320x240, about 6900 Kbps at 1920x1080); set it in kilobits per second to pin it instead.
Sample Usage¶
var encoderSettings = new AOMAV1EncoderSettings
{
BufferInitialSize = TimeSpan.FromMilliseconds(4000),
BufferOptimalSize = TimeSpan.FromMilliseconds(5000),
BufferSize = TimeSpan.FromMilliseconds(6000),
CPUUsed = 4, // CPU usage level, 0-9
DropFrame = 0, // Disable frame dropping
RateControl = AOMAV1EncoderEndUsageMode.VBR, // Variable Bitrate mode
MaxQuantizer = 63, // Quantizer ceiling - keep at 63 for rate control
TargetBitrate = 0, // 0 = scale the encoder default to the frame size
Threads = 0, // Auto thread count
UseRowMT = true, // Enable row-based threading
SuperResMode = AOMAV1SuperResolutionMode.None // No super-resolution
};
RAV1E Encoder¶
RAV1E is a fast and safe AV1 encoder written in Rust.
Tiles is what lets it use more than one core: a single tile encodes at the same speed on 4 cores and on 32. The default of 16 encodes 8 seconds of 720p30 in about 29 seconds against 84 seconds untiled, for roughly 1% more bitrate. Set it to 0 to encode the frame as a single tile.
Features¶
- Speed preset control
- Quantizer settings
- Key frame interval control
- Low latency mode
- Tile-based multi-core encoding
- Psychovisual tuning
Sample Usage¶
var encoderSettings = new RAV1EEncoderSettings
{
Bitrate = 3000, // 3 Mbps
LowLatency = false, // Standard latency mode
MaxKeyFrameInterval = 240, // Maximum keyframe interval
MinKeyFrameInterval = 12, // Minimum keyframe interval
MinQuantizer = 0, // Minimum quantizer value
Quantizer = 100, // Base quantizer value
SpeedPreset = 10, // Speed preset (0-10)
Tiles = 16, // Tiles the frame is split into (0 - one tile)
Tune = RAV1EEncoderTune.Psychovisual // Psychovisual tuning
};
SVT-AV1 Encoder¶
SVT-AV1 (Scalable Video Technology for AV1) is a high-performance software AV1 encoder that scales across CPU cores. It is considerably faster than RAV1E at comparable quality.
Features¶
- Speed/quality preset control (0-13)
- Three mutually exclusive rate-control modes: CQP, CRF, and CBR/VBR by bitrate
- Intra frame period and tiling control
- Explicit logical-core count
Rate Control Modes¶
Set exactly one of the three - the settings are applied in this order and the first one present wins:
CQP- constant quantization parameter (1-63)TargetBitrate(with the optionalMaxBitrateceiling for VBR) - both in kbits/secCRF- constant rate factor (1-63, default 35), used when neither of the above is set
Sample Usage¶
var encoderSettings = new SVTAV1EncoderSettings
{
TargetBitrate = 3000, // 3 Mbps (kbits/sec), enables CBR/VBR
MaxBitrate = 4500, // VBR ceiling (kbits/sec)
Preset = 8, // Speed preset (0-13), lower is slower and better
IntraPeriodLength = 240, // Intra frame period, -2 for automatic
TileColumns = 1, // log2: two tile columns
TileRows = 1 // log2: two tile rows
};
General Usage Notes¶
- All encoders implement the
IAV1EncoderSettingsinterface, providing a consistent way to create encoder blocks. - Each encoder has its own specific set of optimizations and trade-offs.
- Hardware encoders (AMF, NVENC, QSV) generally provide better performance but may have specific hardware requirements.
- Software encoders (AOM, RAV1E, SVT-AV1) offer more flexibility but may require more CPU resources.
Recommendations¶
- For AMD GPUs: Use AMF encoder
- For NVIDIA GPUs: Use NVENC encoder
- For Intel GPUs: Use QSV encoder
- For maximum quality: Use AOM encoder
- For CPU-efficient encoding: Use RAV1E encoder
- For fast software encoding: Use SVT-AV1 encoder
Best Practices¶
- Always check encoder availability before using it
- Set appropriate bitrates based on your target resolution and framerate
- Use appropriate GOP sizes based on your content type
- Consider the trade-off between quality and encoding speed
- Test different rate control modes to find the best fit for your use case