Blocs plateforme Linux - VisioForge Media Blocks SDK .Net¶
Cette section couvre les MediaBlocks spécifiquement optimisés pour les plateformes Linux.
Blocs disponibles¶
Décodeurs matériels VA-API¶
Linux fournit un décodage vidéo accéléré matériellement via VA-API (Video Acceleration API) :
- VAAPIH264DecoderBlock : décodage matériel H.264/AVC
- VAAPIHEVCDecoderBlock : décodage matériel H.265/HEVC
- VAAPIJPEGDecoderBlock : décodage matériel JPEG
- VAAPIVC1DecoderBlock : décodage matériel VC-1
Voir la documentation des décodeurs vidéo
Exigences de plateforme¶
- Linux : toute distribution Linux moderne
- VA-API : libva et le pilote approprié pour votre GPU
- Matériel : GPU Intel, AMD ou autre prenant en charge VA-API
Fonctionnalités¶
- Accélération matérielle : décodage vidéo sur GPU
- Faible consommation CPU : déchargement du décodage vers du matériel dédié
- Large compatibilité : fonctionne avec les GPU Intel, AMD et autres
- Efficacité énergétique : consommation électrique réduite
- Multiflux : prise en charge de plusieurs flux HD/4K
Exemple de code¶
Décodage matériel H.264¶
var pipeline = new MediaBlocksPipeline();
var fileSource = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri("video.mp4")));
// Décodeur matériel VA-API
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
{
// Solution de repli vers le décodeur logiciel
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();
Plusieurs décodeurs matériels¶
var pipeline = new MediaBlocksPipeline();
// Décoder le flux H.264
var h264Source = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri("h264.mp4")));
var h264Decoder = new VAAPIH264DecoderBlock();
pipeline.Connect(h264Source.VideoOutput, h264Decoder.Input);
// Décoder le flux H.265
var h265Source = new UniversalSourceBlock(await UniversalSourceSettings.CreateAsync(new Uri("h265.mp4")));
var h265Decoder = new VAAPIHEVCDecoderBlock();
pipeline.Connect(h265Source.VideoOutput, h265Decoder.Input);
// Mélanger les deux flux (exemple)
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();
Installation et configuration¶
Installation de VA-API¶
Ubuntu/Debian :
sudo apt-get install libva2 libva-drm2 vainfo
Fedora/RHEL :
sudo dnf install libva libva-utils
Vérification de la prise en charge de VA-API¶
vainfo
Cette commande affiche les profils et points d'entrée VA-API disponibles.
Installation du pilote¶
GPU Intel :
# Ubuntu/Debian
sudo apt-get install intel-media-va-driver
# Fedora/RHEL
sudo dnf install intel-media-driver
GPU AMD :
# Ubuntu/Debian
sudo apt-get install mesa-va-drivers
# Fedora/RHEL
sudo dnf install mesa-va-drivers
Vérification de la prise en charge matérielle dans le code¶
// Vérifier si le décodeur VA-API H.264 est disponible
if (VAAPIH264DecoderBlock.IsAvailable())
{
Console.WriteLine("Le décodage matériel VA-API H.264 est disponible");
var decoder = new VAAPIH264DecoderBlock();
}
else
{
Console.WriteLine("VA-API indisponible, utilisation du décodeur logiciel");
var decoder = new UniversalDecoderBlock(MediaBlockPadMediaType.Video);
}
Conseils de performance¶
- Assurez-vous que les pilotes VA-API sont correctement installés
- Utilisez les décodeurs matériels lorsque c'est possible pour de meilleures performances
- Vérifiez la disponibilité du décodeur avant de créer des blocs
- Surveillez l'utilisation de la mémoire GPU lors du traitement de plusieurs flux
- Utilisez la commande
vainfopour vérifier la prise en charge matérielle
Dépannage¶
VA-API ne fonctionne pas : 1. Vérifiez l'installation du pilote avec vainfo 2. Vérifiez les autorisations utilisateur (vous devrez peut-être appartenir au groupe video ou render) 3. Assurez-vous que les plugins GStreamer VA-API sont installés : gstreamer1.0-vaapi
Problèmes de permissions :
# Ajouter l'utilisateur au groupe video
sudo usermod -a -G video $USER
# Déconnectez-vous puis reconnectez-vous pour appliquer les changements
Plateformes¶
Linux (Ubuntu, Debian, Fedora, RHEL, Arch et autres distributions).
Nécessite la prise en charge de VA-API avec les pilotes appropriés.
Documentation connexe¶
- VideoDecoders - Blocs de décodage matériel
- Nvidia - Accélération GPU Nvidia (fonctionne aussi sous Linux)