Codificación de video¶
La codificación de video es el proceso de convertir datos de video sin comprimir en un formato comprimido. Este proceso es esencial para reducir el tamaño de los archivos de video, facilitando su almacenamiento y transmisión por internet. VisioForge Media Blocks SDK proporciona una amplia gama de codificadores de video que soportan varios formatos y códecs.
Para algunos codificadores de video, el SDK puede usar aceleración GPU para acelerar el proceso de codificación. Esta característica es especialmente útil cuando se trabaja con archivos de video de alta resolución o cuando se codifican múltiples videos simultáneamente.
Se soportan GPUs NVidia, Intel y AMD para aceleración de hardware.
Codificador AV1¶
AV1 (AOMedia Video 1): Desarrollado por la Alliance for Open Media, AV1 es un formato de codificación de video abierto y libre de regalías diseñado para transmisiones de video por Internet. Es conocido por su alta eficiencia de compresión y mejor calidad a tasas de bits más bajas en comparación con sus predecesores, haciéndolo adecuado para aplicaciones de streaming de video de alta resolución.
Usa clases que implementan la interfaz IAV1EncoderSettings para establecer los parámetros.
Codificadores CPU¶
AOMAV1EncoderSettings¶
Configuraciones del codificador AOM AV1. Codificador CPU.
Plataformas: Windows, Linux, macOS.
RAV1EEncoderSettings¶
Configuraciones del codificador RAV1E AV1. Codificador CPU.
- Propiedades clave:
Bitrate(entero): Tasa de bits objetivo en kilobits por segundo.LowLatency(booleano): Habilita o deshabilita el modo de baja latencia. Predeterminado esfalse.MaxKeyFrameInterval(ulong): Intervalo máximo entre fotogramas clave. Predeterminado es240.MinKeyFrameInterval(ulong): Intervalo mínimo entre fotogramas clave. Predeterminado es12.MinQuantizer(uint): Valor mínimo del cuantizador (rango 0-255). Predeterminado es0.Quantizer(uint): Valor del cuantizador (rango 0-255). Predeterminado es100.SpeedPreset(int): Preajuste de velocidad de codificación (10 más rápido, 0 más lento). Predeterminado es6.Tune(RAV1EEncoderTune): Configuración de ajuste para el codificador. Predeterminado esRAV1EEncoderTune.Psychovisual.
Plataformas: Windows, Linux, macOS.
Enum RAV1EEncoderTune¶
Especifica la opción de ajuste para el codificador RAV1E.
PSNR(0): Ajusta para mejor PSNR (Relación Señal-Ruido de Pico).Psychovisual(1): Ajusta para calidad psicovisual.
Codificadores GPU¶
AMFAV1EncoderSettings¶
Codificador de video AV1 GPU AMD.
Plataformas: Windows, Linux, macOS.
NVENCAV1EncoderSettings¶
Codificador de video AV1 GPU Nvidia.
Plataformas: Windows, Linux, macOS.
QSVAV1EncoderSettings¶
Codificador de video AV1 GPU Intel.
Plataformas: Windows, Linux, macOS.
Nota: Los codificadores Intel QSV también pueden utilizar enumeraciones comunes como QSVCodingOption (On, Off, Unknown) para configurar características específicas de hardware.
Información del bloque¶
Nombre: AV1EncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | AV1 | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->AV1EncoderBlock;
AV1EncoderBlock-->MP4SinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var videoEncoderBlock = new AV1EncoderBlock(new QSVAV1EncoderSettings());
pipeline.Connect(fileSource.VideoOutput, videoEncoderBlock.Input);
var mp4SinkBlock = new MP4SinkBlock(new MP4SinkSettings(@"output.mp4"));
pipeline.Connect(videoEncoderBlock.Output, mp4SinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador DV¶
DV (Digital Video): Un formato para almacenar video digital introducido en los años 90, usado principalmente en videocámaras digitales de consumo. DV emplea compresión intra-frame para entregar video de alta calidad en cintas digitales, haciéndolo adecuado para videos caseros así como producciones semi-profesionales.
Información del bloque¶
Nombre: DVEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | video/x-dv | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->DVEncoderBlock;
DVEncoderBlock-->AVISinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var videoEncoderBlock = new DVEncoderBlock(new DVVideoEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, videoEncoderBlock.Input);
var sinkBlock = new AVISinkBlock(new AVISinkSettings(@"output.avi"));
pipeline.Connect(videoEncoderBlock.Output, sinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador de video personalizado¶
El bloque CustomVideoEncoder proporciona un marco flexible para integrar codificadores de video de terceros o especializados que no están directamente soportados por el SDK. Esto permite la integración de códecs propietarios, codificadores experimentales o soluciones de codificación específicas de plataforma.
Información del bloque¶
Nombre: CustomVideoEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | Video comprimido | 1 |
Configuraciones¶
CustomVideoEncoderSettings¶
public class CustomVideoEncoderSettings
{
// Nombre del elemento codificador GStreamer (ej. "x264enc", "nvh264enc")
public string EncoderName { get; set; }
// Diccionario de propiedades específicas del codificador
public Dictionary<string, object> Properties { get; set; }
}
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->CustomVideoEncoderBlock;
CustomVideoEncoderBlock-->MP4SinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
// Configurar codificador personalizado (ejemplo con x264enc)
var customSettings = new CustomVideoEncoderSettings
{
EncoderName = "x264enc",
Properties = new Dictionary<string, object>
{
{ "bitrate", 2000 },
{ "speed-preset", "medium" }
}
};
var customEncoder = new CustomVideoEncoderBlock(customSettings);
pipeline.Connect(fileSource.VideoOutput, customEncoder.Input);
var mp4Sink = new MP4SinkBlock(new MP4SinkSettings("output.mp4"));
pipeline.Connect(customEncoder.Output, mp4Sink.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux (requiere plugins GStreamer apropiados).
Codificador GIF¶
El bloque codificador GIF crea imágenes GIF animadas a partir de flujos de video, adecuado para contenido web, redes sociales y documentación.
Información del bloque¶
Nombre: GIFEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | GIF | 1 |
Configuraciones¶
GIFEncoderSettings¶
public class GIFEncoderSettings
{
// Tasa de fotogramas para el GIF de salida
public VideoFrameRate FrameRate { get; set; }
// Habilitar tramado para mejor representación de color
public bool Dither { get; set; }
}
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->GIFEncoderBlock;
GIFEncoderBlock-->FileSink;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var gifSettings = new GIFEncoderSettings
{
FrameRate = new VideoFrameRate(10, 1), // 10 fps para tamaño de archivo más pequeño
Dither = true
};
var gifEncoder = new GIFEncoderBlock(gifSettings, "output.gif");
pipeline.Connect(fileSource.VideoOutput, gifEncoder.Input);
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador H264¶
El bloque codificador H264 se usa para codificar archivos en MP4, MKV y algunos otros formatos, así como para streaming de red usando RTSP y HLS.
Usa clases que implementan la interfaz IH264EncoderSettings para establecer los parámetros.
Configuraciones¶
NVENCH264EncoderSettings¶
Codificador de video H264 GPUs Nvidia.
Plataformas: Windows, Linux, macOS.
AMFHEVCEncoderSettings¶
Codificador de video H264 GPUs AMD/ATI.
Plataformas: Windows, Linux, macOS.
QSVH264EncoderSettings¶
Codificador de video H264 GPU Intel.
Plataformas: Windows, Linux, macOS.
OpenH264EncoderSettings¶
Codificador H264 CPU software.
Plataformas: Windows, macOS, Linux, iOS, Android.
CustomH264EncoderSettings¶
Permite usar un elemento GStreamer personalizado para codificación H264. Puedes especificar el nombre del elemento GStreamer y configurar sus propiedades.
Plataformas: Windows, Linux, macOS.
Información del bloque¶
Nombre: H264EncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | H264 | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->H264EncoderBlock;
H264EncoderBlock-->MP4SinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var h264EncoderBlock = new H264EncoderBlock(new NVENCH264EncoderSettings());
pipeline.Connect(fileSource.VideoOutput, h264EncoderBlock.Input);
var mp4SinkBlock = new MP4SinkBlock(new MP4SinkSettings(@"output.mp4"));
pipeline.Connect(h264EncoderBlock.Output, mp4SinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Aplicaciones de muestra¶
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador HEVC/H265¶
El codificador HEVC se usa para codificar archivos en MP4, MKV y algunos otros formatos, así como para streaming de red usando RTSP y HLS.
Usa clases que implementan la interfaz IHEVCEncoderSettings para establecer los parámetros.
Configuraciones¶
MFHEVCEncoderSettings¶
Codificador HEVC Microsoft Media Foundation. Codificador CPU.
Plataformas: Windows.
NVENCHEVCEncoderSettings¶
Codificador de video HEVC GPUs Nvidia.
Plataformas: Windows, Linux, macOS.
AMFHEVCEncoderSettings¶
Codificador de video HEVC GPUs AMD/ATI.
Plataformas: Windows, Linux, macOS.
QSVHEVCEncoderSettings¶
Codificador de video HEVC GPU Intel.
Plataformas: Windows, Linux, macOS.
CustomHEVCEncoderSettings¶
Permite usar un elemento GStreamer personalizado para codificación HEVC. Puedes especificar el nombre del elemento GStreamer y configurar sus propiedades.
Plataformas: Windows, Linux, macOS.
Información del bloque¶
Nombre: HEVCEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | HEVC | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->HEVCEncoderBlock;
HEVCEncoderBlock-->MP4SinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var hevcEncoderBlock = new HEVCEncoderBlock(new NVENCHEVCEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, hevcEncoderBlock.Input);
var mp4SinkBlock = new MP4SinkBlock(new MP4SinkSettings(@"output.mp4"));
pipeline.Connect(hevcEncoderBlock.Output, mp4SinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador MJPEG¶
MJPEG (Motion JPEG): Un formato de compresión de video donde cada fotograma de video se comprime por separado en una imagen JPEG. Esta técnica es directa y resulta en ninguna compresión inter-frame, haciéndola ideal para situaciones donde se requiere edición o acceso específico de fotograma, como en vigilancia e imágenes médicas.
Usa clases que implementan la interfaz IH264EncoderSettings para establecer los parámetros.
Configuraciones¶
MJPEGEncoderSettings¶
Codificador MJPEG predeterminado. Codificador CPU.
- Propiedades clave:
Quality(int): Nivel de calidad JPEG (10-100). Predeterminado es85.- Tipo de codificador:
MJPEGEncoderType.CPU.
Plataformas: Windows, Linux, macOS, iOS, Android.
QSVMJPEGEncoderSettings¶
Codificador MJPEG GPUs Intel.
- Propiedades clave:
Quality(uint): Nivel de calidad JPEG (10-100). Predeterminado es85.- Tipo de codificador:
MJPEGEncoderType.GPU_Intel_QSV_MJPEG.
Plataformas: Windows, Linux, macOS.
Enum MJPEGEncoderType¶
Especifica el tipo de codificador MJPEG.
CPU: Codificador basado en CPU predeterminado.GPU_Intel_QSV_MJPEG: Codificador MJPEG basado en GPU Intel QuickSync.
Información del bloque¶
Nombre: MJPEGEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | MJPEG | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->MJPEGEncoderBlock;
MJPEGEncoderBlock-->AVISinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var videoEncoderBlock = new MJPEGEncoderBlock(new MJPEGEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, videoEncoderBlock.Input);
var aviSinkBlock = new AVISinkBlock(new AVISinkSettings(@"output.avi"));
pipeline.Connect(videoEncoderBlock.Output, aviSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador Theora¶
El codificador Theora se usa para codificar archivos de video en formato WebM.
Configuraciones¶
TheoraEncoderSettings¶
Proporciona configuraciones para el codificador Theora.
- Propiedades clave:
Bitrate(kbps)CapOverflow,CapUnderflow(limitación de depósito de bits)DropFrames(permitir/no permitir eliminación de fotogramas)KeyFrameAuto(detección automática de fotograma clave)KeyFrameForce(intervalo para forzar fotograma clave cada N fotogramas)KeyFrameFrequency(frecuencia de fotograma clave)MultipassCacheFile(ruta de cadena para caché multipaso)MultipassMode(usando enumTheoraMultipassMode:SinglePass,FirstPass,SecondPass)Quality(valor entero, típicamente 0-63 para libtheora, el significado puede variar)RateBuffer(tamaño del búfer de control de tasa en unidades de fotogramas, 0 = auto)SpeedLevel(cantidad de búsqueda de vector de movimiento, 0-2 o superior dependiendo de la implementación)VP3Compatible(booleano para habilitar compatibilidad VP3)- Disponibilidad: Puede verificarse usando
TheoraEncoderSettings.IsAvailable().
Información del bloque¶
Nombre: TheoraEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | video/x-theora | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->TheoraEncoderBlock;
TheoraEncoderBlock-->WebMSinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var theoraEncoderBlock = new TheoraEncoderBlock(new TheoraEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, theoraEncoderBlock.Input);
var webmSinkBlock = new WebMSinkBlock(new WebMSinkSettings(@"output.webm"));
pipeline.Connect(theoraEncoderBlock.Output, webmSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador VPX¶
El bloque codificador VPX se usa para codificar archivos en WebM, MKV o archivos OGG. El codificador VPX es un conjunto de códecs de video para codificación en formatos VP8 y VP9.
El bloque codificador VPX utiliza clases de configuraciones que implementan la interfaz IVPXEncoderSettings. Las clases de configuraciones clave incluyen:
Configuraciones¶
La clase base común para configuraciones de codificador CPU VP8 y VP9 es VPXEncoderSettings. Proporciona una amplia gama de propiedades compartidas para ajustar el proceso de codificación, como:
ARNRMaxFrames,ARNRStrength,ARNRType(reducción de ruido AltRef)BufferInitialSize,BufferOptimalSize,BufferSize(configuraciones de búfer del cliente)CPUUsed,CQLevel(calidad restringida)Deadline(plazo de codificación por fotograma)DropframeThresholdRateControl(usando enumVPXRateControl)ErrorResilient(usando enumVPXErrorResilientFlags)HorizontalScalingMode,VerticalScalingMode(usando enumVPXScalingMode)KeyFrameMaxDistance,KeyFrameMode(usando enumVPXKeyFrameMode)MinQuantizer,MaxQuantizerMultipassCacheFile,MultipassMode(usando enumVPXMultipassMode)NoiseSensitivityTargetBitrate(en Kbits/s)NumOfThreadsTokenPartitions(usando enumVPXTokenPartitions)Tuning(usando enumVPXTuning)
VP8EncoderSettings¶
Codificador CPU para VP8. Hereda de VPXEncoderSettings.
- Propiedades clave: Aprovecha propiedades de
VPXEncoderSettingsadaptadas para VP8. - Tipo de codificador:
VPXEncoderType.VP8. - Disponibilidad: Puede verificarse usando
VP8EncoderSettings.IsAvailable().
VP9EncoderSettings¶
Codificador CPU para VP9. Hereda de VPXEncoderSettings.
- Propiedades clave: Además de las propiedades
VPXEncoderSettings, incluye configuraciones específicas de VP9: AQMode(modo de cuantización adaptativa, usando enumVPXAdaptiveQuantizationMode)FrameParallelDecoding(permitir procesamiento paralelo)RowMultithread(codificación de fila multi-hilo)TileColumns,TileRows(valores log2)- Tipo de codificador:
VPXEncoderType.VP9. - Disponibilidad: Puede verificarse usando
VP9EncoderSettings.IsAvailable().
QSVVP9EncoderSettings¶
Codificador Intel QSV (acelerado por GPU) para VP9.
- Propiedades clave:
LowLatencyTargetUsage(1: Mejor calidad, 4: Equilibrado, 7: Mejor velocidad)Bitrate(Kbit/seg)GOPSizeICQQuality(Calidad Constante Inteligente)MaxBitrate(Kbit/seg)QPI,QPP(cuantizador constante para fotogramas I y P)Profile(0-3)RateControl(usando enumQSVVP9EncRateControl)RefFrames- Tipo de codificador:
VPXEncoderType.QSV_VP9. - Disponibilidad: Puede verificarse usando
QSVVP9EncoderSettings.IsAvailable().
CustomVPXEncoderSettings¶
Permite usar un elemento GStreamer personalizado para codificación VPX.
- Propiedades clave:
ElementName(cadena para especificar el nombre del elemento GStreamer)Properties(Dictionarypara configurar el elemento) VideoFormat(formato de video requerido comoVideoFormatX.NV12)- Tipo de codificador:
VPXEncoderType.CustomEncoder.
Enumeraciones VPX¶
Varias enumeraciones están disponibles para configurar codificadores VPX:
VPXAdaptiveQuantizationMode: Define modos de cuantización adaptativa (ej.Off,Variance,Complexity,CyclicRefresh,Equator360,Perceptual,PSNR,Lookahead).VPXErrorResilientFlags: Banderas para características de resiliencia a errores (ej.None,Default,Partitions).VPXKeyFrameMode: Define estrategias de colocación de fotograma clave (ej.Auto,Disabled).VPXMultipassMode: Modos para codificación multipaso (ej.OnePass,FirstPass,LastPass).VPXRateControl: Modos de control de tasa (ej.VBR,CBR,CQ).VPXScalingMode: Modos de escalado (ej.Normal,_4_5,_3_5,_1_2).VPXTokenPartitions: Número de particiones de token (ej.One,Two,Four,Eight).VPXTuning: Opciones de ajuste para el codificador (ej.PSNR,SSIM).VPXEncoderType: Especifica la variante del codificador VPX (ej.VP8,VP9,QSV_VP9,CustomEncoder, y específicos de plataforma comoOMXExynosVP8Encoder).QSVVP9EncRateControl: Modos de control de tasa específicos paraQSVVP9EncoderSettings(ej.CBR,VBR,CQP,ICQ).
Información del bloque¶
Nombre: VPXEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | VP8/VP9 | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->VPXEncoderBlock;
VPXEncoderBlock-->WebMSinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var vp8EncoderBlock = new VPXEncoderBlock(new VP8EncoderSettings());
pipeline.Connect(fileSource.VideoOutput, vp8EncoderBlock.Input);
var webmSinkBlock = new WebMSinkBlock(new WebMSinkSettings(@"output.webm"));
pipeline.Connect(vp8EncoderBlock.Output, webmSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador MPEG2¶
MPEG-2: Un estándar ampliamente usado para compresión de video y audio, comúnmente encontrado en DVDs, transmisiones de televisión digital (como DVB y ATSC), y SVCDs. Ofrece buena calidad a tasas de bits relativamente bajas para contenido de definición estándar.
Información del bloque¶
Nombre: MPEG2EncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | video/mpeg | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->MPEG2EncoderBlock;
MPEG2EncoderBlock-->MPEGTSSinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var mpeg2EncoderBlock = new MPEG2EncoderBlock(new MPEG2VideoEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, mpeg2EncoderBlock.Input);
// Ejemplo: Usando un MPGSinkBlock para archivos .mpg o .ts
var mpgSinkBlock = new MPGSinkBlock(new MPGSinkSettings(@"output.mpg"));
pipeline.Connect(mpeg2EncoderBlock.Output, mpgSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux.
Codificador MPEG4¶
MPEG-4 Part 2 Visual (a menudo referido simplemente como video MPEG-4) es un estándar de compresión de video que es parte del conjunto MPEG-4. Se usa en varias aplicaciones, incluyendo streaming de video, videoconferencia y discos ópticos como DivX y Xvid.
Información del bloque¶
Nombre: MPEG4EncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | video/mpeg, mpegversion=4 | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->MPEG4EncoderBlock;
MPEG4EncoderBlock-->MP4SinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4"; // Archivo de entrada
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var mpeg4EncoderBlock = new MPEG4EncoderBlock(new MPEG4VideoEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, mpeg4EncoderBlock.Input);
// Ejemplo: Usando un MP4SinkBlock para archivos .mp4
var mp4SinkBlock = new MP4SinkBlock(new MP4SinkSettings(@"output_mpeg4.mp4"));
pipeline.Connect(mpeg4EncoderBlock.Output, mp4SinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux.
Codificador PNG¶
El bloque codificador PNG proporciona compresión de imagen sin pérdida con alta calidad, adecuado para archivo, capturas de pantalla y aplicaciones que requieren calidad de imagen perfecta con soporte de transparencia.
Información del bloque¶
Nombre: PNGEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | PNG | 1 |
Configuraciones¶
PNGEncoderSettings¶
public class PNGEncoderSettings
{
// Nivel de compresión (0-9, mayor = mejor compresión pero más lento)
public int CompressionLevel { get; set; }
// Tipo de filtro PNG para compresión óptima
public PNGFilterType FilterType { get; set; }
}
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->PNGEncoderBlock;
PNGEncoderBlock-->FileSink;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4"; // Archivo de entrada
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var pngSettings = new PNGEncoderSettings
{
CompressionLevel = 6 // Compresión equilibrada
};
var pngEncoder = new PNGEncoderBlock(pngSettings, "frame.png");
pipeline.Connect(fileSource.VideoOutput, pngEncoder.Input);
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux, iOS, Android.
Codificador Apple ProRes¶
Apple ProRes: Un formato de compresión de video de alta calidad con pérdida desarrollado por Apple Inc., ampliamente usado en producción y post-producción de video profesional por su excelente equilibrio de calidad de imagen y rendimiento.
Información del bloque¶
Nombre: AppleProResEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | ProRes | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->AppleProResEncoderBlock;
AppleProResEncoderBlock-->MOVSinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline();
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var proResEncoderBlock = new AppleProResEncoderBlock(new AppleProResEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, proResEncoderBlock.Input);
var movSinkBlock = new MOVSinkBlock(new MOVSinkSettings(@"output.mov"));
pipeline.Connect(proResEncoderBlock.Output, movSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
macOS, iOS.
Disponibilidad¶
Puedes verificar si el codificador Apple ProRes está disponible en tu entorno usando:
Codificador WMV¶
Resumen¶
El bloque codificador WMV codifica video en formato WMV.
Información del bloque¶
Nombre: WMVEncoderBlock.
| Dirección del pin | Tipo de medio | Conteo de pines |
|---|---|---|
| Entrada | Video sin comprimir | 1 |
| Salida | video/x-wmv | 1 |
El pipeline de muestra¶
graph LR;
UniversalSourceBlock-->WMVEncoderBlock;
WMVEncoderBlock-->ASFSinkBlock;
Código de muestra¶
var pipeline = new MediaBlocksPipeline(false);
var filename = "test.mp4";
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri(filename)));
var wmvEncoderBlock = new WMVEncoderBlock(new WMVEncoderSettings());
pipeline.Connect(fileSource.VideoOutput, wmvEncoderBlock.Input);
var asfSinkBlock = new ASFSinkBlock(new ASFSinkSettings(@"output.wmv"));
pipeline.Connect(wmvEncoderBlock.Output, asfSinkBlock.CreateNewInput(MediaBlockPadMediaType.Video));
await pipeline.StartAsync();
Plataformas¶
Windows, macOS, Linux.
Consideraciones Generales de Configuraciones de Video¶
Mientras que las clases de configuraciones de codificador específicas proporcionan control detallado, algunos conceptos generales o enumeraciones podrían ser relevantes a través de diferentes codificadores o para entender opciones de calidad de video.