Encodeurs AV1¶
Video Capture SDK .Net Video Edit SDK .Net Media Blocks SDK .Net
VideoCaptureCoreX VideoEditCoreX MediaBlocksPipeline
VisioForge prend en charge plusieurs implémentations d'encodeurs AV1, chacune avec ses propres fonctionnalités et capacités. Ce document couvre les encodeurs disponibles et leurs options de configuration.
Actuellement, les encodeurs AV1 sont pris en charge dans les moteurs multiplateformes : VideoCaptureCoreX, VideoEditCoreX et Media Blocks SDK.
Non disponible sur iOS
L'encodage AV1 n'est pas disponible sur iOS. Apple ne fournit d'encodeur matériel AV1 sur aucune puce, et les encodeurs AV1 logiciels ne font pas partie du redistribuable iOS. Le décodage AV1 fonctionne sur iOS - via VideoToolbox à partir de l'A17 Pro, et via le décodeur logiciel dav1d partout ailleurs.
Encodeurs disponibles¶
- Encodeur AMD AMF AV1 (AMF)
- Encodeur NVIDIA NVENC AV1 (NVENC)
- Encodeur Intel QuickSync AV1 (QSV)
- Encodeur AOM AV1
- Encodeur RAV1E
- Encodeur SVT-AV1
L'encodeur SVT-AV1 est livré dans le paquet de runtime supplémentaire de votre plateforme - le paquet VisioForge.CrossPlatform.Core.Windows.Adds.* correspondant à votre architecture, VisioForge.CrossPlatform.Core.macOS.Adds (2026.8.25 ou plus récent) ou VisioForge.CrossPlatform.Core.macCatalyst.Adds (2026.8.26 ou plus récent) - référencé à côté du paquet principal. Sans lui, AV1EncoderBlock.IsAvailable(new SVTAV1EncoderSettings()) renvoie false.
L'encodeur AOM AV1 est disponible sur macOS, macCatalyst et Linux. C'est un encodeur logiciel orienté qualité, destiné à l'encodage hors ligne ; pour le flux de travail logiciel habituel, préférez SVT-AV1, nettement plus rapide et qui passe mieux à l'échelle sur plusieurs cœurs.
Les paquets VisioForge.CrossPlatform.Core.macOS.Adds et VisioForge.CrossPlatform.Core.macCatalyst.Adds contiennent le runtime AOM nécessaire à partir de la version 2026.8.30. Sous Linux, installez un runtime GStreamer fournissant l'élément av1enc ; utilisez AOMAV1EncoderSettings.IsAvailable() pour vérifier le runtime actif.
Vous pouvez utiliser l'encodeur AV1 avec une sortie WebM ou pour le streaming réseau.
Encodeur AMD AMF AV1¶
L'encodeur AMD AMF AV1 fournit un encodage accéléré par le matériel utilisant les cartes graphiques AMD.
Fonctionnalités¶
- Plusieurs préréglages de qualité
- Modes de contrôle de débit variable
- Contrôle de la taille de GOP
- Contrôle du QP (paramètre de quantification)
- Prise en charge de Smart Access Video
Modes de contrôle de débit¶
Default: dépend de l'usageCQP: QP constantLCVBR: VBR contraint par latenceVBR: VBR contraint par crêteCBR: débit constant
Exemple d'utilisation¶
var encoderSettings = new AMFAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
GOPSize = 30, // Taille de GOP de 30 images
Preset = AMFAV1EncoderPreset.Quality, // Préréglage qualité
RateControl = AMFAV1RateControlMode.VBR, // Mode débit variable
Usage = AMFAV1EncoderUsage.Transcoding, // Usage transcodage
MaxBitrate = 5000, // Débit max 5 Mbps
QpI = 26, // QP des I-frames
QpP = 26, // QP des P-frames
RefFrames = 1, // Nombre d'images de référence
SmartAccessVideo = false // Smart Access Video désactivé
};
Encodeur NVIDIA NVENC AV1¶
L'encodeur NVENC AV1 de NVIDIA fournit un encodage accéléré par le matériel utilisant les GPU NVIDIA.
Fonctionnalités¶
- Plusieurs préréglages d'encodage
- Prise en charge des B-frames adaptatifs
- AQ temporelle (quantification adaptative)
- Contrôle de tampon VBV (Video Buffering Verifier)
- Prise en charge de l'AQ spatiale
Modes de contrôle de débit¶
Default: mode par défautConstQP: paramètre de quantification constantCBR: débit constantVBR: débit variableCBR_LD_HQ: CBR basse latence, haute qualitéCBR_HQ: CBR, haute qualité (plus lent)VBR_HQ: VBR, haute qualité (plus lent)
Exemple d'utilisation¶
var encoderSettings = new NVENCAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
Preset = NVENCPreset.HighQuality, // Préréglage haute qualité
RateControl = NVENCRateControl.VBR, // Mode débit variable
GOPSize = 75, // Taille de GOP de 75 images
MaxBitrate = 5000, // Débit max 5 Mbps
BFrames = 2, // 2 B-frames entre I et P
RCLookahead = 8, // Look-ahead de 8 images
TemporalAQ = true, // Activer l'AQ temporelle
Tune = NVENCTune.HighQuality, // Réglage haute qualité
VBVBufferSize = 6000 // Tampon VBV de 6000k
};
Encodeur Intel QuickSync AV1¶
L'encodeur QuickSync AV1 d'Intel fournit un encodage accéléré par le matériel utilisant les GPU Intel.
Fonctionnalités¶
- Prise en charge du mode basse latence
- Target usage configurable
- Contrôle des images de référence
- Paramètres flexibles de taille de GOP
Modes de contrôle de débit¶
CBR: débit constantVBR: débit variableCQP: quantificateur constant
Exemple d'utilisation¶
var encoderSettings = new QSVAV1EncoderSettings
{
Bitrate = 2000, // 2 Mbps
LowLatency = false, // Mode latence standard
TargetUsage = 4, // Qualité/vitesse équilibrées
GOPSize = 30, // Taille de GOP de 30 images
MaxBitrate = 4000, // Débit max 4 Mbps
QPI = 26, // QP des I-frames
QPP = 28, // QP des P-frames
RateControl = QSVAV1EncRateControl.VBR, // Mode débit variable
RefFrames = 1 // Nombre d'images de référence
};
Encodeur AOM AV1¶
L'encodeur AV1 de l'Alliance for Open Media (AOM) est une implémentation logicielle de référence. Il privilégie l'efficacité de compression et les réglages AV1 détaillés à la vitesse d'encodage : il convient donc mieux à une sortie hors ligne qu'à la capture ou au streaming en direct.
Fonctionnalités¶
- Paramètres de contrôle de tampon
- Optimisation de l'utilisation CPU
- Prise en charge de l'abandon d'images
- Capacités multithreading
- Prise en charge de la super-résolution
Modes de contrôle de débit¶
VBR: mode débit variableCBR: mode débit constantCQ: mode qualité contrainteQ: mode qualité constante
Le contrôle de débit ne fonctionne que tant que MaxQuantizer laisse à l'encodeur la marge nécessaire pour dépenser moins de bits. Sa valeur par défaut est 63, le quantificateur le plus élevé d'AV1 ; l'abaisser impose un plancher de qualité au flux, et à 0 l'encodeur ignore TargetBitrate ainsi que tous les réglages de tampon et de dépassement. TargetBitrate vaut 0 par défaut : l'encodeur adapte alors sa propre valeur par défaut à la taille de l'image (256 Kbps en 320x240, environ 6900 Kbps en 1920x1080) ; indiquez-le en kilobits par seconde pour le fixer.
Exemple d'utilisation¶
var encoderSettings = new AOMAV1EncoderSettings
{
BufferInitialSize = TimeSpan.FromMilliseconds(4000),
BufferOptimalSize = TimeSpan.FromMilliseconds(5000),
BufferSize = TimeSpan.FromMilliseconds(6000),
CPUUsed = 4, // Niveau d'utilisation CPU, 0-9
DropFrame = 0, // Désactiver l'abandon d'images
RateControl = AOMAV1EncoderEndUsageMode.VBR, // Mode débit variable
MaxQuantizer = 63, // Plafond du quantificateur - garder 63
TargetBitrate = 0, // 0 = adapter la valeur par défaut à la taille de l'image
Threads = 0, // Nombre de threads automatique
UseRowMT = true, // Activer le multithreading par ligne
SuperResMode = AOMAV1SuperResolutionMode.None // Pas de super-résolution
};
Encodeur RAV1E¶
RAV1E est un encodeur AV1 rapide et sûr écrit en Rust.
Tiles est ce qui lui permet d'utiliser plus d'un cœur : une tuile unique encode à la même vitesse sur 4 cœurs que sur 32. La valeur par défaut de 16 encode 8 secondes de 720p30 en environ 29 secondes contre 84 secondes sans tuiles, pour environ 1 % de débit en plus. Mettez-la à 0 pour encoder l'image comme une seule tuile.
Fonctionnalités¶
- Contrôle du préréglage de vitesse
- Paramètres de quantificateur
- Contrôle de l'intervalle d'images-clés
- Mode basse latence
- Encodage multicœur par tuiles
- Réglage psychovisuel
Exemple d'utilisation¶
var encoderSettings = new RAV1EEncoderSettings
{
Bitrate = 3000, // 3 Mbps
LowLatency = false, // Mode latence standard
MaxKeyFrameInterval = 240, // Intervalle maximum entre images-clés
MinKeyFrameInterval = 12, // Intervalle minimum entre images-clés
MinQuantizer = 0, // Valeur minimale du quantificateur
Quantizer = 100, // Valeur de base du quantificateur
SpeedPreset = 10, // Préréglage de vitesse (0-10)
Tiles = 16, // Tuiles en lesquelles l'image est découpée (0 - une seule tuile)
Tune = RAV1EEncoderTune.Psychovisual // Réglage psychovisuel
};
Encodeur SVT-AV1¶
SVT-AV1 (Scalable Video Technology for AV1) est un encodeur AV1 logiciel haute performance qui exploite l'ensemble des cœurs du processeur. Il est nettement plus rapide que RAV1E à qualité comparable.
Fonctionnalités¶
- Contrôle du preset vitesse/qualité (0-13)
- Trois modes de contrôle de débit mutuellement exclusifs : CQP, CRF et CBR/VBR par débit
- Contrôle de la période d'images intra et du découpage en tuiles
- Nombre explicite de cœurs logiques
Modes de contrôle de débit¶
Définissez exactement l'un des trois : les réglages sont appliqués dans cet ordre et le premier présent l'emporte :
CQP- paramètre de quantification constant (1-63)TargetBitrate(avec le plafond facultatifMaxBitratepour le VBR), les deux en kbits/sCRF- facteur de débit constant (1-63, 35 par défaut), utilisé si aucun des précédents n'est défini
Exemple d'utilisation¶
var encoderSettings = new SVTAV1EncoderSettings
{
TargetBitrate = 3000, // 3 Mbps (kbits/s), active le CBR/VBR
MaxBitrate = 4500, // Plafond VBR (kbits/s)
Preset = 8, // Preset de vitesse (0-13), plus bas = plus lent et meilleur
IntraPeriodLength = 240, // Période d'images intra, -2 pour automatique
TileColumns = 1, // log2 : deux colonnes de tuiles
TileRows = 1 // log2 : deux lignes de tuiles
};
Notes d'utilisation générales¶
- Tous les encodeurs implémentent l'interface
IAV1EncoderSettings, offrant un moyen cohérent de créer des blocs d'encodeur. - Chaque encodeur a son propre ensemble d'optimisations et de compromis.
- Les encodeurs matériels (AMF, NVENC, QSV) offrent généralement de meilleures performances mais peuvent avoir des exigences matérielles spécifiques.
- Les encodeurs logiciels (AOM, RAV1E, SVT-AV1) offrent plus de flexibilité mais peuvent nécessiter plus de ressources CPU.
Recommandations¶
- Pour les GPU AMD : utilisez l'encodeur AMF
- Pour les GPU NVIDIA : utilisez l'encodeur NVENC
- Pour les GPU Intel : utilisez l'encodeur QSV
- Pour la qualité maximale : utilisez l'encodeur AOM
- Pour un encodage efficace en CPU : utilisez l'encodeur RAV1E
- Pour un encodage logiciel rapide : utilisez l'encodeur SVT-AV1
Bonnes pratiques¶
- Vérifiez toujours la disponibilité de l'encodeur avant de l'utiliser
- Définissez des débits appropriés à votre résolution et fréquence d'images cibles
- Utilisez des tailles de GOP appropriées au type de contenu
- Tenez compte du compromis entre qualité et vitesse d'encodage
- Testez différents modes de contrôle de débit pour trouver le meilleur ajustement pour votre cas d'usage