Codificadores AV1¶
Video Capture SDK .Net Video Edit SDK .Net Media Blocks SDK .Net
VideoCaptureCoreX VideoEditCoreX MediaBlocksPipeline
VisioForge soporta múltiples implementaciones de codificadores AV1, cada una con sus propias características y capacidades únicas. Este documento cubre los codificadores disponibles y sus opciones de configuración.
Actualmente, los codificadores AV1 están soportados en los motores multiplataforma: VideoCaptureCoreX, VideoEditCoreX, y Media Blocks SDK.
No disponible en iOS
La codificación AV1 no está disponible en iOS. Apple no incluye ningún codificador AV1 por hardware en ninguno de sus chips, y los codificadores AV1 por software no forman parte del redistribuible de iOS. La decodificación AV1 sí funciona en iOS: mediante VideoToolbox a partir del A17 Pro, y mediante el decodificador por software dav1d en el resto de dispositivos.
Codificadores disponibles¶
- Codificador AMD AMF AV1 (AMF)
- Codificador NVIDIA NVENC AV1 (NVENC)
- Codificador Intel QuickSync AV1 (QSV)
- Codificador AOM AV1
- Codificador RAV1E
- Codificador SVT-AV1
El codificador SVT-AV1 se distribuye en el paquete de runtime adicional de su plataforma - el paquete VisioForge.CrossPlatform.Core.Windows.Adds.* de su arquitectura, VisioForge.CrossPlatform.Core.macOS.Adds (2026.8.25 o posterior) o VisioForge.CrossPlatform.Core.macCatalyst.Adds (2026.8.26 o posterior) - que se referencia junto al paquete principal. Sin él, AV1EncoderBlock.IsAvailable(new SVTAV1EncoderSettings()) devuelve false.
El codificador AOM AV1 está disponible en macOS, macCatalyst y Linux. Es un codificador por software orientado a la calidad y pensado para codificación offline; para el flujo de trabajo habitual por software prefiera SVT-AV1, que es bastante más rápido y escala mejor entre núcleos.
Los paquetes VisioForge.CrossPlatform.Core.macOS.Adds y VisioForge.CrossPlatform.Core.macCatalyst.Adds incluyen el runtime AOM necesario a partir de la versión 2026.8.30. En Linux, instale un runtime de GStreamer que proporcione el elemento av1enc; use AOMAV1EncoderSettings.IsAvailable() para comprobar el runtime activo.
Puede usar el codificador AV1 con salida WebM o para streaming de red.
Codificador AMD AMF AV1¶
El codificador AMD AMF AV1 proporciona codificación acelerada por hardware usando tarjetas gráficas AMD.
Características¶
- Múltiples preajustes de calidad
- Modos de control de tasa de bits variable
- Control de tamaño GOP
- Control de QP (Parámetro de Cuantización)
- Soporte de Smart Access Video
Modos de control de tasa¶
Default: Depende del usoCQP: QP constanteLCVBR: VBR restringido por latenciaVBR: VBR restringido por picoCBR: Tasa de bits constante
Ejemplo de uso¶
var encoderSettings = new AMFAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
GOPSize = 30, // Tamaño GOP de 30 cuadros
Preset = AMFAV1EncoderPreset.Quality, // Preajuste de calidad
RateControl = AMFAV1RateControlMode.VBR, // Modo de tasa de bits variable
Usage = AMFAV1EncoderUsage.Transcoding, // Uso de transcodificación
MaxBitrate = 5000, // Tasa de bits máxima de 5 Mbps
QpI = 26, // QP de cuadro I
QpP = 26, // QP de cuadro P
RefFrames = 1, // Número de cuadros de referencia
SmartAccessVideo = false // Smart Access Video deshabilitado
};
Codificador NVIDIA NVENC AV1¶
El codificador NVENC AV1 de NVIDIA proporciona codificación acelerada por hardware usando GPUs NVIDIA.
Características¶
- Múltiples preajustes de codificación
- Soporte de cuadros B adaptativos
- AQ (Cuantización Adaptativa) temporal
- Control de buffer VBV (Video Buffering Verifier)
- Soporte de AQ espacial
Modos de control de tasa¶
Default: Modo predeterminadoConstQP: Parámetro de cuantización constanteCBR: Tasa de bits constanteVBR: Tasa de bits variableCBR_LD_HQ: CBR de baja latencia, alta calidadCBR_HQ: CBR, alta calidad (más lento)VBR_HQ: VBR, alta calidad (más lento)
Ejemplo de uso¶
var encoderSettings = new NVENCAV1EncoderSettings
{
Bitrate = 3000, // 3 Mbps
Preset = NVENCPreset.HighQuality, // Preajuste de alta calidad
RateControl = NVENCRateControl.VBR, // Modo de tasa de bits variable
GOPSize = 75, // Tamaño GOP de 75 cuadros
MaxBitrate = 5000, // Tasa de bits máxima de 5 Mbps
BFrames = 2, // 2 cuadros B entre I y P
RCLookahead = 8, // 8 cuadros de lookahead
TemporalAQ = true, // Habilitar AQ temporal
Tune = NVENCTune.HighQuality, // Ajuste de alta calidad
VBVBufferSize = 6000 // Buffer VBV de 6000k
};
Codificador Intel QuickSync AV1¶
El codificador QuickSync AV1 de Intel proporciona codificación acelerada por hardware usando GPUs Intel.
Características¶
- Soporte de modo de baja latencia
- Uso objetivo configurable
- Control de cuadros de referencia
- Configuración flexible de tamaño GOP
Modos de control de tasa¶
CBR: Tasa de bits constanteVBR: Tasa de bits variableCQP: Cuantizador constante
Ejemplo de uso¶
var encoderSettings = new QSVAV1EncoderSettings
{
Bitrate = 2000, // 2 Mbps
LowLatency = false, // Modo de latencia estándar
TargetUsage = 4, // Balance calidad/velocidad
GOPSize = 30, // Tamaño GOP de 30 cuadros
MaxBitrate = 4000, // Tasa de bits máxima de 4 Mbps
QPI = 26, // QP de cuadro I
QPP = 28, // QP de cuadro P
RateControl = QSVAV1EncRateControl.VBR, // Modo de tasa de bits variable
RefFrames = 1 // Número de cuadros de referencia
};
Codificador AOM AV1¶
El codificador AOM AV1 de la Alliance for Open Media es una implementación de referencia basada en software. Prioriza la eficiencia de compresión y el control detallado de AV1 sobre la velocidad de codificación, por lo que es más adecuado para salida offline que para captura o streaming en vivo.
Características¶
- Configuraciones de control de buffer
- Optimización de uso de CPU
- Soporte de descarte de cuadros
- Capacidades de multi-threading
- Soporte de super-resolución
Modos de control de tasa¶
VBR: Modo de tasa de bits variableCBR: Modo de tasa de bits constanteCQ: Modo de calidad restringidaQ: Modo de calidad constante
El control de tasa solo funciona mientras MaxQuantizer deja al codificador margen para gastar menos bits. Su valor por defecto es 63, el cuantizador más alto de AV1; bajarlo impone un mínimo de calidad al flujo, y con 0 el codificador ignora TargetBitrate y todos los ajustes de buffer y de overshoot. TargetBitrate vale 0 por defecto, lo que significa que el codificador escala su propio valor por defecto al tamaño del cuadro (256 Kbps a 320x240, unos 6900 Kbps a 1920x1080); indíquelo en kilobits por segundo para fijarlo.
Ejemplo de uso¶
var encoderSettings = new AOMAV1EncoderSettings
{
BufferInitialSize = TimeSpan.FromMilliseconds(4000),
BufferOptimalSize = TimeSpan.FromMilliseconds(5000),
BufferSize = TimeSpan.FromMilliseconds(6000),
CPUUsed = 4, // Nivel de uso de CPU, 0-9
DropFrame = 0, // Deshabilitar descarte de cuadros
RateControl = AOMAV1EncoderEndUsageMode.VBR, // Modo de tasa de bits variable
MaxQuantizer = 63, // Techo del cuantizador - mantener en 63
TargetBitrate = 0, // 0 = escalar el valor por defecto al tamaño del cuadro
Threads = 0, // Conteo automático de hilos
UseRowMT = true, // Habilitar threading basado en filas
SuperResMode = AOMAV1SuperResolutionMode.None // Sin super-resolución
};
Codificador RAV1E¶
RAV1E es un codificador AV1 rápido y seguro escrito en Rust.
Tiles es lo que le permite usar más de un núcleo: una sola tesela codifica a la misma velocidad con 4 núcleos que con 32. El valor predeterminado de 16 codifica 8 segundos de 720p30 en unos 29 segundos frente a 84 segundos sin teselas, a cambio de aproximadamente un 1% más de tasa de bits. Póngalo a 0 para codificar el fotograma como una sola tesela.
Características¶
- Control de preajuste de velocidad
- Configuración de cuantizador
- Control de intervalo de keyframes
- Modo de baja latencia
- Codificación multinúcleo por teselas
- Ajuste psicovisual
Ejemplo de uso¶
var encoderSettings = new RAV1EEncoderSettings
{
Bitrate = 3000, // 3 Mbps
LowLatency = false, // Modo de latencia estándar
MaxKeyFrameInterval = 240, // Intervalo máximo de keyframes
MinKeyFrameInterval = 12, // Intervalo mínimo de keyframes
MinQuantizer = 0, // Valor mínimo de cuantizador
Quantizer = 100, // Valor base de cuantizador
SpeedPreset = 10, // Preajuste de velocidad (0-10)
Tiles = 16, // Teselas en que se divide el fotograma (0 - una tesela)
Tune = RAV1EEncoderTune.Psychovisual // Ajuste psicovisual
};
Codificador SVT-AV1¶
SVT-AV1 (Scalable Video Technology for AV1) es un codificador AV1 por software de alto rendimiento que escala entre los núcleos de la CPU. Es considerablemente más rápido que RAV1E con una calidad comparable.
Características¶
- Control del preset de velocidad/calidad (0-13)
- Tres modos de control de tasa mutuamente excluyentes: CQP, CRF y CBR/VBR por bitrate
- Control del periodo de fotogramas intra y del mosaico (tiling)
- Número explícito de núcleos lógicos
Modos de control de tasa¶
Establezca exactamente uno de los tres: los ajustes se aplican en este orden y prevalece el primero presente:
CQP- parámetro de cuantización constante (1-63)TargetBitrate(con el techo opcionalMaxBitratepara VBR), ambos en kbits/segCRF- factor de tasa constante (1-63, por defecto 35), usado cuando no se establece ninguno de los anteriores
Ejemplo de uso¶
var encoderSettings = new SVTAV1EncoderSettings
{
TargetBitrate = 3000, // 3 Mbps (kbits/seg), activa CBR/VBR
MaxBitrate = 4500, // Techo de VBR (kbits/seg)
Preset = 8, // Preset de velocidad (0-13), menor es más lento y mejor
IntraPeriodLength = 240, // Periodo de fotogramas intra, -2 para automático
TileColumns = 1, // log2: dos columnas de mosaico
TileRows = 1 // log2: dos filas de mosaico
};
Notas generales de uso¶
- Todos los codificadores implementan la interfaz
IAV1EncoderSettings, proporcionando una forma consistente de crear bloques de codificador. - Cada codificador tiene su propio conjunto específico de optimizaciones y compensaciones.
- Los codificadores de hardware (AMF, NVENC, QSV) generalmente proporcionan mejor rendimiento pero pueden tener requisitos de hardware específicos.
- Los codificadores de software (AOM, RAV1E, SVT-AV1) ofrecen más flexibilidad pero pueden requerir más recursos de CPU.
Recomendaciones¶
- Para GPUs AMD: Use el codificador AMF
- Para GPUs NVIDIA: Use el codificador NVENC
- Para GPUs Intel: Use el codificador QSV
- Para máxima calidad: Use el codificador AOM
- Para codificación eficiente en CPU: Use el codificador RAV1E
- Para codificación por software rápida: Use el codificador SVT-AV1
Mejores prácticas¶
- Siempre verifique la disponibilidad del codificador antes de usarlo
- Establezca tasas de bits apropiadas basándose en su resolución y tasa de cuadros objetivo
- Use tamaños GOP apropiados basándose en su tipo de contenido
- Considere la compensación entre calidad y velocidad de codificación
- Pruebe diferentes modos de control de tasa para encontrar el mejor ajuste para su caso de uso