Bloques de plataforma Linux - VisioForge Media Blocks SDK .Net¶
Esta sección cubre los MediaBlocks específicamente optimizados para plataformas Linux.
Bloques disponibles¶
Decodificadores de hardware VA-API¶
Linux proporciona decodificación de video acelerada por hardware mediante VA-API (Video Acceleration API):
- VAAPIH264DecoderBlock: decodificación H.264/AVC por hardware
- VAAPIHEVCDecoderBlock: decodificación H.265/HEVC por hardware
- VAAPIJPEGDecoderBlock: decodificación JPEG por hardware
- VAAPIVC1DecoderBlock: decodificación VC-1 por hardware
Consulte la documentación de decodificadores de video
Requisitos de plataforma¶
- Linux: cualquier distribución Linux moderna
- VA-API: libva y el controlador apropiado para su GPU
- Hardware: GPU Intel, AMD u otra con soporte VA-API
Características¶
- Aceleración por hardware: decodificación de video basada en GPU
- Bajo uso de CPU: descarga la decodificación al hardware dedicado
- Amplia compatibilidad: funciona con GPUs Intel, AMD y otras
- Eficiencia energética: reduce el consumo de energía
- Multi-flujo: gestiona varios flujos HD/4K
Código de ejemplo¶
Decodificación H.264 por hardware¶
var pipeline = new MediaBlocksPipeline();
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync("video.mp4"));
// Decodificador VA-API por hardware
if (VAAPIH264DecoderBlock.IsAvailable())
{
var vaapiDecoder = new VAAPIH264DecoderBlock();
pipeline.Connect(fileSource.VideoOutput, vaapiDecoder.Input);
var videoRenderer = new VideoRendererBlock(pipeline, VideoView1);
pipeline.Connect(vaapiDecoder.Output, videoRenderer.Input);
}
else
{
// Recurrir al decodificador por software
var decoder = new UniversalDecoderBlock(MediaBlockPadMediaType.Video);
pipeline.Connect(fileSource.VideoOutput, decoder.Input);
var videoRenderer = new VideoRendererBlock(pipeline, VideoView1);
pipeline.Connect(decoder.VideoOutput, videoRenderer.Input);
}
await pipeline.StartAsync();
Varios decodificadores de hardware¶
var pipeline = new MediaBlocksPipeline();
// Decodificar flujo H.264
var h264Source = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync("h264.mp4"));
var h264Decoder = new VAAPIH264DecoderBlock();
pipeline.Connect(h264Source.VideoOutput, h264Decoder.Input);
// Decodificar flujo H.265
var h265Source = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync("h265.mp4"));
var h265Decoder = new VAAPIHEVCDecoderBlock();
pipeline.Connect(h265Source.VideoOutput, h265Decoder.Input);
// Mezclar ambos flujos (ejemplo)
var mixer = new VideoMixerBlock(mixerSettings);
pipeline.Connect(h264Decoder.Output, mixer.Inputs[0]);
pipeline.Connect(h265Decoder.Output, mixer.Inputs[1]);
var videoRenderer = new VideoRendererBlock(pipeline, VideoView1);
pipeline.Connect(mixer.Output, videoRenderer.Input);
await pipeline.StartAsync();
Instalación y configuración¶
Instalar VA-API¶
Ubuntu/Debian:
sudo apt-get install libva2 libva-drm2 vainfo
Fedora/RHEL:
sudo dnf install libva libva-utils
Comprobar el soporte VA-API¶
vainfo
Este comando muestra los perfiles y entrypoints VA-API disponibles.
Instalación de controladores¶
GPUs Intel:
# Ubuntu/Debian
sudo apt-get install intel-media-va-driver
# Fedora/RHEL
sudo dnf install intel-media-driver
GPUs AMD:
# Ubuntu/Debian
sudo apt-get install mesa-va-drivers
# Fedora/RHEL
sudo dnf install mesa-va-drivers
Comprobar el soporte de hardware en código¶
// Comprobar si el decodificador VA-API H.264 está disponible
if (VAAPIH264DecoderBlock.IsAvailable())
{
Console.WriteLine("Decodificación H.264 por hardware VA-API disponible");
var decoder = new VAAPIH264DecoderBlock();
}
else
{
Console.WriteLine("VA-API no disponible, usando decodificador por software");
var decoder = new UniversalDecoderBlock(MediaBlockPadMediaType.Video);
}
Consejos de rendimiento¶
- Asegúrese de que los controladores VA-API están instalados correctamente
- Use decodificadores por hardware cuando estén disponibles para mejor rendimiento
- Compruebe la disponibilidad del decodificador antes de crear bloques
- Monitorice el uso de memoria GPU al procesar varios flujos
- Use el comando
vainfopara verificar el soporte de hardware
Resolución de problemas¶
VA-API no funciona: 1. Verifique la instalación del controlador con vainfo 2. Compruebe los permisos del usuario (puede necesitar pertenecer al grupo video o render) 3. Asegúrese de que los plugins GStreamer VA-API están instalados: gstreamer1.0-vaapi
Problemas de permisos:
# Añadir el usuario al grupo video
sudo usermod -a -G video $USER
# Cierre sesión y vuelva a iniciarla para que surta efecto
Plataformas¶
Linux (Ubuntu, Debian, Fedora, RHEL, Arch y otras distribuciones).
Requiere soporte VA-API con los controladores apropiados.
Documentación relacionada¶
- VideoDecoders — bloques de decodificación por hardware
- Nvidia — aceleración con GPU Nvidia (también funciona en Linux)