Last updated: Janvier 2026
Media Player SDK .NET vs LibVLCSharp
Comparaison professionnelle de lecteurs vidéo .NET
Vous cherchez une alternative à LibVLCSharp avec navigation DVD, effets audio, sortie caméra virtuelle et détection de mouvement ? Cette comparaison évalue VisioForge Media Player SDK .NET face à LibVLCSharp pour le développement de lecteurs vidéo .NET — couvrant WPF, WinForms, Avalonia et les scénarios de lecture multiplateforme. Que vous ayez besoin d'un lecteur Windows basé sur DirectShow ou d'une solution multiplateforme basée sur GStreamer, ce guide vous aide à choisir le bon SDK de lecteur multimédia .NET.
Résumé exécutif
| Aspect | Media Player SDK .NET | LibVLCSharp |
|---|---|---|
| Architecture | Double moteur (DirectShow + GStreamer) | Moteur VLC monolithique via interop C libvlc |
| Moteurs | MediaPlayerCore (Windows) + MediaPlayerCoreX (multiplateforme) | Noyau LibVLC unique |
| Tarifs | EUR 250-500/an ou EUR 750-1 500 à vie | Gratuit (LGPL 2.1) |
| Idéal pour | Apps professionnelles, DVD, effets, broadcast | Lecture simple, compatibilité de formats la plus large |
| Courbe d'apprentissage | Modérée (deux moteurs, API riche) | Facile (API minimale) |
Analyse approfondie de l'architecture
Media Player SDK .NET — Conception à double moteur
Deux moteurs indépendants sont fournis dans un seul SDK. MediaPlayerCore (Windows) fournit des décodeurs DirectShow / Media Foundation / FFMPEG et VLC avec navigation DVD, playlist, PiP, OSD, caméra virtuelle, sortie NDI et plus de 40 effets audio. MediaPlayerCoreX (multiplateforme) utilise un pipeline basé sur GStreamer avec une API async-first pour Windows, macOS, Linux, iOS et Android.
- ▶Décodeurs DirectShow / Media Foundation / FFMPEG et VLC sous Windows
- ▶Navigation DVD, playlist, PiP, OSD, caméra virtuelle, sortie NDI
- ▶Plus de 40 effets audio incluant les effets DirectSound
- ▶Plusieurs moteurs de lecture sélectionnables via Source_Mode
- ▶Pipeline multiplateforme basé sur GStreamer avec API async-first
- ▶Vidéo VR/360 et effets vidéo/audio en temps réel
LibVLCSharp — Moteur VLC unique
LibVLCSharp encapsule LibVLC (le moteur du lecteur multimédia VLC) fournissant une API unique unifiée sur toutes les plateformes. Il est axé sur la lecture avec des capacités de traitement limitées mais bénéficie de la pile de décodeurs éprouvée de VLC et de la compatibilité de formats la plus large.
- ▶Encapsule LibVLC — le moteur du lecteur multimédia VLC
- ▶API unique unifiée sur toutes les plateformes
- ▶Axé sur la lecture avec des capacités de traitement limitées
- ▶Pile de décodeurs VLC éprouvée au combat
- ▶Support Chromecast et navigation réseau
- ▶Grande communauté et documentation extensive
Différences architecturales clés
| Aspect | Media Player SDK | LibVLCSharp |
|---|---|---|
| Conception du moteur | Double moteur : basé sur DirectShow (Windows) + basé sur GStreamer (multiplateforme) | Moteur VLC monolithique unique |
| Traitement audio | Plus de 40 effets audio typés avec EQ par bande, compresseur, reverb, chorus | Préréglages EQ basiques uniquement |
| Traitement vidéo | Pipelines d'effets CPU + GPU, chroma key, PiP, overlays OSD | Filtres VLC basiques via options chaîne |
| Capacités de sortie | Caméra virtuelle, NDI, affichage multi-écran | Chromecast, navigation réseau (SMB, FTP, UPnP) |
| Détection | Détection de visages, mouvement, objets IA, codes-barres/QR intégrée | Aucune capacité de détection |
| Style d'API | API .NET fortement typée avec IntelliSense | API simple — lecture en 3 lignes de C# |
Comparaison fonctionnalité par fonctionnalité
Lecture
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Lecture de fichiers (500+ formats) | ✅ | ✅(La plus large via VLC) |
| Streaming réseau (RTSP, RTMP, HLS, DASH) | ✅ | ✅ |
| Navigation DVD (menus, chapitres, titres) | ✅ | ✅ |
| Menus Blu-ray | ❌ | ✅ |
| Sous-titres (SRT, SSA/ASS, WebVTT, VobSub, PGS) | ✅ | ✅ |
| Vidéo 360 / VR | ✅ | ✅ |
| Lecture HDR | ⚠️ | ✅(Avec tonemap) |
| Lecture MIDI | ✅ | ❌ |
| Médias chiffrés | ✅ | ❌ |
| Entrée SRT / NDI | ✅ | ❌ |
Audio
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Effets audio (40+ EQ, reverb, chorus, 3D) | ✅ | ⚠️(EQ basique uniquement) |
| VU-mètre professionnel + FFT | ✅ | ❌ |
| Améliorateur audio (normalisation, auto-gain) | ✅ | ❌ |
| Mixage audio (ajout de pistes externes) | ✅ | ❌ |
| Mappeur de canaux | ✅ | ❌ |
Traitement vidéo
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Effets vidéo en temps réel (CPU + GPU) | ✅ | ⚠️(Filtres VLC basiques) |
| Chroma Key (fond vert) | ✅ | ❌ |
| Upscaling vidéo par IA | ✅ | ❌ |
| Étalonnage couleur LUT | ✅ | ❌ |
| Image dans l'image | ✅ | ❌ |
| Système d'overlay OSD (multicouche) | ✅ | ⚠️(Bandeau basique) |
| Composition vidéo | ✅ | ❌ |
Sortie
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Sortie caméra virtuelle | ✅ | ❌ |
| Sortie NDI | ✅ | ❌ |
| Affichage multi-écran | ✅ | ❌ |
Détection et analyse
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Détection de visages | ✅ | ❌ |
| Détection de mouvement | ✅ | ❌ |
| Détection d'objets par IA | ✅ | ❌ |
| Scan de codes-barres / QR | ✅ | ❌ |
Contrôle de lecture
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Vitesse variable | ✅ | ✅ |
| Avance image par image (avant + arrière) | ✅ | ⚠️(Avant uniquement) |
| Lecture inversée | ✅ | ❌ |
| Recherche précise à l'image | ✅ | ⚠️(Basé sur les keyframes) |
| Gestion de playlist (intégrée) | ✅ | ⚠️(Manuel) |
| Boucle avec événements | ✅ | ✅ |
| Lecture par segments | ✅ | ⚠️ |
Capture d'images
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Capture vers fichier (JPEG, PNG, BMP) | ✅ | ✅ |
| Capture vers Bitmap / SKBitmap / byte[] | ✅ | ⚠️ |
Réseau
| Fonctionnalité | Media Player SDK | LibVLCSharp |
|---|---|---|
| Chromecast | ❌ | ✅ |
| Navigation réseau (SMB, FTP, UPnP) | ❌ | ✅ |
| Découverte SSDP / UPnP | ❌ | ✅ |
Support des plateformes
Compatibilité des systèmes d'exploitation
| Plateforme | Media Player SDK | LibVLCSharp |
|---|---|---|
| Windows 7-11 | ✅ | ✅ |
| macOS 10.15+ | ✅ | ✅(LibVLC supporte 10.7+) |
| Linux | ✅ | ✅ |
| Android 7.0+ | ✅ | ✅(LibVLC supporte 2.3+) |
| iOS 13+ | ✅ | ✅(LibVLC supporte 8.4+) |
| tvOS | ❌ | ✅ |
Compatibilité des frameworks UI
| Framework | Media Player SDK | LibVLCSharp |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| WinUI 3 | ✅ | ⚠️(Communauté) |
| .NET MAUI | ✅ | ✅ |
| Avalonia | ✅ | ✅ |
| Uno Platform | ✅ | ⚠️(Limité) |
| Xamarin | ✅ | ✅ |
| Console | ✅ | ✅ |
Comparaison des tarifs
Tarifs Media Player SDK .NET
1 développeur — lecture de fichiers/flux, sous-titres, effets basiques
1 développeur — + streaming réseau (RTSP, RTMP, HLS, NDI), détection de mouvement, accélération HW
1 développeur — + vidéo VR/360
Développeurs illimités, licence perpétuelle, équipe entière
Développeurs illimités, licence perpétuelle, équipe entière
Développeurs illimités, licence perpétuelle, équipe entière
All licenses include:
- ✓ Distribution sans redevances
- ✓ Pas de frais d'exécution
- ✓ Tous les exemples de code source
- ✓ Gratuit pour usage non commercial (clé de licence requise)
- ✓ Support prioritaire par ticket
Coûts de LibVLCSharp
Licence LGPL 2.1 — liaison dynamique requise
Consultation payante disponible auprès de VideoLAN
Considérations de conformité LGPL
LibVLCSharp et libvlc sont sous licence LGPL 2.1. Cela signifie que vous pouvez les utiliser dans des logiciels commerciaux propriétaires tant que vous respectez les termes de la LGPL. Les exigences clés incluent :
- ⚠Doit lier dynamiquement à libvlc (pas de liaison statique)
- ⚠Doit permettre aux utilisateurs de remplacer les DLL LibVLC par des versions modifiées
- ⚠Doit inclure une copie de la licence LGPL et mentionner l'utilisation de libvlc
- ⚠Ne peut pas modifier et rendre propriétaire le code VLC
- ⚠Certaines équipes juridiques d'entreprise exigent une licence commerciale pour éviter les risques de conformité LGPL
Bien que la LGPL soit plus permissive que la GPL, la conformité nécessite toujours une attention particulière aux exigences de liaison et de distribution. Media Player SDK offre une distribution sans redevances sans les contraintes de liaison dynamique LGPL.
Exemples de code
Exemple 1 : Lecture simple de fichier
Media Player SDK (MediaPlayerCoreX)
C#var player = new MediaPlayerCoreX(videoView);
var source = await UniversalSourceSettingsV2.CreateAsync(
new Uri("video.mp4"));
await player.OpenAsync(source);
await player.PlayAsync();
// Position and duration
var duration = await player.DurationAsync();
await player.Position_SetAsync(
TimeSpan.FromSeconds(30));LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "video.mp4",
FromType.FromPath));
// Position and duration
var duration = mediaPlayer.Length; // ms
mediaPlayer.Time = 30000; // msExemple 2 : DVD avec navigation
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Source_Mode = MediaPlayerSourceMode.DVD_DS;
player.Playlist_Clear();
player.Playlist_Add(@"D:\");
await player.PlayAsync();
// Save bookmark for later resume
int savedTitle = player.DVD_Title_GetCurrent();
int savedChapter = player.DVD_Chapter_GetCurrent();
var savedPosition = await player.Position_GetAsync();
Console.WriteLine(
$"Bookmarked: Title {savedTitle}, " +
$"Chapter {savedChapter}, " +
$"Position {savedPosition}");
// Resume from saved bookmark
await player.DVD_Title_PlayAsync(savedTitle);
await player.DVD_Chapter_PlayAsync(savedChapter);
await player.Position_SetAsync(savedPosition);
// Navigate using title/chapter jumps
await player.DVD_Menu_ShowAsync(DVDMenu.Title);
int totalChapters = player.DVD_Chapter_GetCount();
await player.DVD_Chapter_PlayAsync(
Math.Min(5, totalChapters));LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "dvd:///D:",
FromType.FromLocation));
// DVD navigation via mediaPlayer methods
mediaPlayer.Navigate(NavigateMode.Up);
mediaPlayer.Navigate(NavigateMode.Activate);
// Less granular control than Media Player SDK
// No bookmark/resume API
// Limited chapter/title managementExemple 3 : Traitement audio avec effets
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("podcast.mp3");
player.Audio_Effects_Enabled = true;
// Register 10-band EQ and compressor
player.Audio_Effects_Add(-1,
AudioEffectType.Equalizer, "gfxEq",
true, TimeSpan.Zero, TimeSpan.Zero);
player.Audio_Effects_Add(-1,
AudioEffectType.Compressor, "comp",
true, TimeSpan.Zero, TimeSpan.Zero);
await player.PlayAsync();
// Custom per-band EQ values (dB)
float[] bands = { -4f, -2f, 0f, 3f, 5f,
6f, 5f, 4f, 2f, -1f };
for (int i = 0; i < bands.Length; i++)
player.Audio_Effects_Equalizer_Band_Set(
-1, "gfxEq", i, bands[i]);
// Compressor for consistent loudness
player.Audio_Effects_Compressor(-1, "comp",
gain: 5f, threshold: -20f, ratio: 4f,
attack: 10f, release: 200f);
// Query peak levels
var levels = player.Audio_Channel_GetLevels();
Console.WriteLine(
$"L: {levels.Left:F1} dB, " +
$"R: {levels.Right:F1} dB");LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "music.mp3",
FromType.FromPath));
// Basic equalizer only
var eq = new Equalizer(1); // preset index
mediaPlayer.SetEqualizer(eq);
// No VU meter
// No FFT spectrum analysis
// No 3D sound
// No reverb, chorus, or compressor
// No per-band EQ control
// No audio level monitoringExemple 4 : Caméra virtuelle + sortie NDI
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("presentation.mp4");
// Output to virtual camera (Zoom, Teams, OBS)
player.Virtual_Camera_Output_Enabled = true;
// Output to NDI network
player.NDI_Output = new NDIOutput
{
Name = "Studio Feed"
};
// Add OSD overlay
player.OSD_Enabled = true;
player.OSD_Layers_Create(
0, 0, 1920, 1080, true);
player.OSD_Layers_Draw_Text(
0, 10, 10, "LIVE",
new Font("Arial", 36), Color.Red);
player.OSD_Layers_Render();
await player.PlayAsync();LibVLCSharp
C#// Virtual camera output: NOT AVAILABLE
// NDI output: NOT AVAILABLE
// OSD overlay: Limited to VLC marquee
Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
var media = new Media(libVLC,
"presentation.mp4",
FromType.FromPath);
media.AddOption(":sub-filter=marq");
media.AddOption(":marq-marquee=LIVE");
mediaPlayer.Play(media);
// No virtual camera
// No NDI
// No rich OSD layersExemple 5 : Détection de mouvement et de visages
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("lobby_feed.mp4");
// Face detection with highlight
player.Face_Tracking = new FaceTrackingSettings
{
Enabled = true,
Highlight = true,
ScaleFactor = 1.1,
MinNeighbors = 5
};
player.OnFaceDetected += (s, e) =>
Console.WriteLine(
$"Detected {e.Count} face(s)");
// AI object detection
player.AI_ObjectDetection =
new AIObjectDetectionSettings
{
Enabled = true,
Confidence = 0.6f,
Classes = new[] {
"person", "car", "bag" }
};
player.OnAIObjectDetected += (s, e) =>
Console.WriteLine(
$"AI: {e.Label} ({e.Confidence:P0})");
await player.PlayAsync();LibVLCSharp
C#// Motion detection: NOT AVAILABLE
// Face detection: NOT AVAILABLE
// AI object detection: NOT AVAILABLE
// Barcode scanning: NOT AVAILABLE
// Would need external libraries
// (OpenCV, ZXing, etc.) processing
// frames manually
Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "lobby_feed.mp4",
FromType.FromPath));
// No built-in detection
// No event-driven analysis
// Manual frame extraction requiredQuand choisir chaque solution
Choisissez Media Player SDK quand vous avez besoin de
- ✓Applications DVD avec navigation complète des menus, chapitres et signets
- ✓Audio professionnel avec plus de 40 effets, VU-mètre et spectre FFT
- ✓Sortie caméra virtuelle pour Zoom, Teams et OBS
- ✓Sortie NDI pour les workflows de broadcast et production
- ✓Moniteurs de confiance multi-écran et affichage dynamique
- ✓Surveillance avec détection de mouvement, visages et objets IA
- ✓Composition image dans l'image et prévisualisation chroma key
- ✓Recherche précise à l'image et lecture inversée pour révision professionnelle
- ✓Scan de codes-barres/QR sur des flux vidéo
Choisissez LibVLCSharp quand vous avez besoin de
- ✓Applications simples de lecteur multimédia de bureau ou mobile
- ✓Applications de visionnage IPTV et streaming
- ✓Streaming Chromecast et navigation réseau (SMB, FTP, UPnP)
- ✓Projets sans budget ou open source
- ✓Couverture maximale de codecs et formats via la pile de décodeurs VLC
- ✓Effort d'intégration minimal — lire une vidéo en trois lignes de C#
- ✓Support tvOS et large compatibilité avec les anciens systèmes d'exploitation
- ✓Grande communauté et contenu StackOverflow étendu
Déploiement et distribution
Déploiement Media Player SDK
- ✓Le package NuGet inclut toutes les dépendances
- ✓Déploiement Xcopy supporté
- ✓Distribution sans redevances avec licence commerciale
- ✓Pas de frais d'exécution
- ✓Aucune obligation LGPL — sûr pour les logiciels propriétaires
- ✓Impact sur la taille de l'app : ~50-100 Mo
Déploiement LibVLCSharp
- ⚠Packages NuGet disponibles (LibVLCSharp + packages plateforme VideoLAN.LibVLC)
- ⚠Doit inclure les DLL LibVLC par plateforme
- ⚠LGPL requiert la liaison dynamique — les utilisateurs doivent pouvoir remplacer les DLL VLC
- ⚠Doit inclure l'avis de licence LGPL
- ⚠Les packages plateforme gèrent la distribution des bibliothèques natives
- ⚠Impact sur la taille de l'app : ~40-80 Mo
Matrice de décision
| Exigence | Media Player SDK | LibVLCSharp | Gagnant |
|---|---|---|---|
| Lecteur multimédia simple | LibVLCSharp | ||
| Kiosque DVD / app de formation | Media Player SDK | ||
| Effets audio / EQ / VU-mètre | Media Player SDK | ||
| Caméra virtuelle pour streaming | Media Player SDK | ||
| Sortie broadcast NDI | Media Player SDK | ||
| Affichage multi-écran | Media Player SDK | ||
| Surveillance avec détection | Media Player SDK | ||
| IPTV / visionnage streaming | LibVLCSharp | ||
| Chromecast / navigation réseau | LibVLCSharp | ||
| Affichage dynamique (avec OSD) | Media Player SDK | ||
| Aucun budget | LibVLCSharp | ||
| Projet open source | LibVLCSharp | ||
| Composition PiP / chroma key | Media Player SDK | ||
| Scan de codes-barres / QR | Media Player SDK |
Conclusion
Media Player SDK .NET
Choisissez Media Player SDK quand vous avez besoin de lecture DVD avec navigation complète des menus, sortie caméra virtuelle pour Zoom/Teams/OBS, détection de visages et objets par IA, plus de 40 effets audio en temps réel, sortie NDI pour le broadcast, composition image dans l'image, recherche précise à l'image et lecture inversée, VU-mètre professionnel avec spectre FFT, chroma key et upscaling vidéo par IA, affichage multi-écran et distribution sans redevances sans contraintes LGPL. La licence annuelle commence à EUR 250/an avec des options de licence perpétuelle disponibles.
LibVLCSharp
Choisissez LibVLCSharp quand vous avez besoin de la couverture maximale de codecs et formats via la pile de décodeurs VLC, lecture gratuite sous licence LGPL, streaming Chromecast et navigation de médias réseau (SMB, FTP, UPnP), effort d'intégration minimal avec lecture en trois lignes de C#, support tvOS et large compatibilité avec les anciens systèmes d'exploitation, et une grande communauté avec un contenu StackOverflow étendu et une stabilité éprouvée.
The Reality
Pour les lecteurs multimédias simples, les clients de streaming et les applications IPTV, LibVLCSharp gère cela avec moins de code et sans coût. Pour les applications nécessitant des effets, de la détection, des kiosques DVD ou une sortie broadcast, Media Player SDK est généralement la seule option viable. Certaines équipes combinent les deux SDKs — LibVLCSharp pour les écrans de lecture basique et Media Player SDK pour les écrans nécessitant des effets, de la détection ou une sortie broadcast.
