Last updated: Janvier 2026
Video Capture SDK .NET vs LibVLCSharp
Comparaison complète de la capture vidéo .NET
Choisir le bon framework de capture vidéo pour votre application .NET est une décision architecturale critique. Ce guide fournit une comparaison détaillée et impartiale entre VisioForge Video Capture SDK .NET — un moteur de capture spécialement conçu — et LibVLCSharp, la liaison .NET pour le moteur multimédia VLC. Alors que LibVLCSharp excelle dans la lecture multimédia et peut ouvrir des périphériques de capture, le Video Capture SDK est spécifiquement conçu pour les flux de travail professionnels de capture vidéo. Nous examinons l'architecture, les fonctionnalités, les performances, les licences et le code réel pour que vous puissiez prendre une décision éclairée.
Résumé exécutif
| Aspect | Video Capture SDK .NET | LibVLCSharp |
|---|---|---|
| Architecture | Double moteur : DirectShow/Media Foundation natif + pipelines GStreamer intégrés | Moteur multimédia VLC monolithique via interop C libvlc |
| Objectif principal | Capture vidéo professionnelle, enregistrement, streaming et traitement | Bibliothèque de lecture multimédia avec accès basique aux périphériques de capture |
| Sources de capture | Webcams, écrans, caméras IP, cartes de capture, tuners TV, NDI, caméras industrielles | Webcams via dshow://, écrans via screen://, caméras IP via URL |
| Aperçu en direct | Aperçu intégré accéléré par GPU avec overlays et effets | Rendu de surface vidéo intégré (orienté lecture) |
| Formats d'enregistrement | MP4, MKV, WebM, AVI, WMV, MOV, TS, GIF + 30 autres avec classes de sortie typées | Via chaîne de transcodage sout — configuration basée sur des chaînes |
| Multi-sortie | API native Outputs_Add pour enregistrement + streaming + aperçu simultanés | Via directive sout duplicate — syntaxe de chaîne fragile |
| Effets vidéo | 40+ effets accélérés CPU et GPU pendant la capture | Pas d'effets en temps réel pendant la capture |
| Détection | Détection de mouvement, visages, codes-barres/QR intégrée | Aucune capacité de détection |
| Licence | Licence commerciale par développeur (abonnement ou perpétuelle) | LGPL 2.1 — gratuit pour la liaison dynamique |
| Tarifs | À partir de 250 EUR (abonnement) jusqu'à 1 500 EUR (équipe à vie) | Gratuit (LGPL 2.1) |
Architecture en détail
Architecture de Video Capture SDK .NET
Le Video Capture SDK utilise une conception à double moteur. Le moteur principal enveloppe DirectShow et Media Foundation sur Windows, donnant un accès natif à chaque périphérique de capture exposé par le système d'exploitation. Un pipeline GStreamer intégré secondaire gère la capture multiplateforme, les opérations de codec avancées et l'ingestion de caméras IP. Les deux moteurs partagent une surface API .NET unifiée, de sorte que le passage de l'un à l'autre ne nécessite aucune modification de code.
- ▶Capture Windows native via les graphes de filtres DirectShow et Media Foundation
- ▶Moteur GStreamer multiplateforme pour macOS, Linux, iOS et Android
- ▶Aperçu accéléré par GPU via les renderers Direct3D / OpenGL
- ▶Architecture événementielle avec support async/await .NET
- ▶Modèle à processus unique — aucune gestion de processus enfant requise
- ▶Classes de sortie typées pour la configuration d'enregistrement et de streaming
Architecture de LibVLCSharp
LibVLCSharp est la liaison .NET officielle pour libvlc, le moteur central derrière le lecteur multimédia VLC. Il fournit un wrapper managé autour de l'API C de VLC, donnant accès aux vastes capacités de lecture multimédia de VLC. Bien que principalement conçu pour la lecture, il peut ouvrir des périphériques de capture en utilisant la syntaxe de localisateur de ressources multimédia de VLC (dshow://, screen://, v4l2://).
- ▶Wrapper .NET managé autour de l'API C libvlc via P/Invoke
- ▶Moteur VLC monolithique gérant toutes les opérations multimédia
- ▶Périphériques de capture accessibles via des localisateurs de ressources multimédia de type URL
- ▶Enregistrement configuré via des chaînes sout (sortie de flux)
- ▶Conception orientée lecture — la capture est un cas d'utilisation secondaire
- ▶Multiplateforme via des bibliothèques natives VLC spécifiques à la plateforme
Différences architecturales clés
| Aspect | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Focus de conception | Spécialement conçu pour les flux de travail de capture vidéo | Bibliothèque de lecture multimédia avec capture comme fonctionnalité secondaire |
| Découverte des périphériques | APIs d'énumération natives du système avec métadonnées complètes | Construction manuelle d'URL dshow:// ou v4l2:// |
| Configuration d'enregistrement | Classes de sortie .NET typées (MP4Output, H264EncoderSettings) | Chaînes de transcodage sout basées sur du texte |
| Gestion des erreurs | Exceptions .NET et erreurs basées sur les événements | Callbacks de log VLC et abonnements aux événements |
| Multi-sortie | API native Outputs_Add — managée et type-safe | Directive sout duplicate — analyse de chaîne fragile |
| Pipeline d'effets | Chaîne d'effets CPU + GPU intégrée pendant la capture | Pas de pipeline d'effets en temps réel pour la capture |
Comparaison fonctionnalité par fonctionnalité
Sources de capture
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Webcams USB | ✅ | ⚠️(Via dshow:// avec contrôle limité) |
| Caméras intégrées d'ordinateur portable | ✅ | ⚠️(Via URL dshow://) |
| Capture d'écran / bureau | ✅ | ⚠️(Basique via screen:// — pas de sélection de région) |
| Capture de fenêtre d'application | ✅ | ❌ |
| Caméras IP (RTSP/ONVIF) | ✅ | ⚠️(Basé sur URL, pas de reconnexion automatique) |
| Cartes de capture (Blackmagic DeckLink) | ✅ | ❌ |
| Tuners TV (BDA/DVB) | ✅ | ❌ |
| Sources NDI | ✅ | ❌ |
| Caméras industrielles (GigE Vision, USB3 Vision) | ✅ | ❌ |
| Caméras virtuelles (OBS Virtual Cam) | ✅ | ⚠️(Via dshow:// sur Windows uniquement) |
Aperçu en direct
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Aperçu vidéo intégré | ✅ | ✅(Surface orientée lecture) |
| Rendu accéléré par GPU | ✅ | ✅ |
| Overlays texte / image sur l'aperçu | ✅ | ❌(Pas d'API d'overlay pendant la capture) |
| Aperçu sans enregistrement | ✅ | ✅ |
| Fenêtres d'aperçu multiples | ✅ | ⚠️(Nécessite plusieurs instances MediaPlayer) |
| Contrôles WinForms / WPF / MAUI | ✅ | ✅(Contrôle VideoView disponible) |
Enregistrement
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| MP4 (H.264 / H.265) | ✅ | ⚠️(Via chaîne de transcodage sout) |
| Conteneur MKV | ✅ | ⚠️(Via chaîne de transcodage sout) |
| WebM (VP8 / VP9) | ✅ | ⚠️(Via chaîne de transcodage sout) |
| AVI | ✅ | ⚠️(Via chaîne de transcodage sout) |
| WMV / ASF | ✅ | ⚠️(Via chaîne de transcodage sout) |
| Configuration de sortie typée | ✅ | ❌(Toute la configuration est basée sur des chaînes) |
| Enregistrement audio uniquement | ✅ | ⚠️(Via chaîne de transcodage sout) |
| Enregistrement segmenté (division par temps/taille) | ✅ | ❌ |
| Enregistrement Pré-Événement (Buffer Circulaire) | ✅ | ❌ |
Multi-sortie
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Enregistrement + streaming simultanés | ✅ | ⚠️(Via sout duplicate — fragile) |
| Sorties d'enregistrement multiples | ✅ | ⚠️(Via sout duplicate — fragile) |
| API native Outputs_Add | ✅ | ❌ |
| Contrôle de sortie indépendant | ✅ | ❌ |
| Capture d'écran pendant l'enregistrement | ✅ | ⚠️(TakeSnapshot disponible mais limité) |
Streaming
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| RTMP Push | ✅ | ⚠️(Via sout — contrôle limité) |
| Mode serveur RTSP | ✅ | ❌ |
| SRT (Caller / Listener) | ✅ | ❌ |
| Génération de segments HLS | ✅ | ⚠️(Via sout — limité) |
| UDP / TCP Unicast / Multicast | ✅ | ⚠️(Via sout rtp/udp) |
| Configuration de streaming typée | ✅ | ❌(Toute la configuration est basée sur des chaînes sout) |
Traitement vidéo
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Redimensionnement / recadrage en temps réel | ✅ | ❌(Pas de traitement pendant la capture) |
| Désentrelacement | ✅ | ✅(VLC dispose d'un désentrelacement intégré) |
| Ajustement des couleurs (luminosité, contraste) | ✅ | ❌(Pas d'effets pendant la capture) |
| Overlay texte / filigrane | ✅ | ❌(Pas d'overlay pendant la capture) |
| Overlay image / logo | ✅ | ❌(Pas d'overlay pendant la capture) |
| Image dans l'image | ✅ | ❌ |
| Chroma Key (fond vert) | ✅ | ❌ |
| Filtres accélérés par GPU | ✅ | ❌ |
Audio
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Capture de périphérique audio | ✅ | ⚠️(Via dshow:// audio) |
| Capture audio système (Loopback) | ✅ | ❌ |
| Mixage audio (entrées multiples) | ✅ | ❌ |
| Contrôle volume / gain en temps réel | ✅ | ⚠️(Contrôle de volume basique) |
| Effets audio (40+ intégrés) | ✅ | ❌ |
| VU-mètre / surveillance de niveau | ✅ | ❌ |
Détection et analyse
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Détection de mouvement | ✅ | ❌ |
| Détection de visages | ✅ | ❌ |
| Lecture de codes-barres / QR | ✅ | ❌ |
| Suivi d'objets | ✅ | ❌ |
| Détection de niveau audio | ✅ | ❌ |
Accès aux frames et intégration
| Fonctionnalité | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Callback de frame brut (RGB / YUV) | ✅ | ⚠️(Via SetVideoCallbacks — configuration complexe) |
| Bitmap / SKBitmap / WriteableBitmap | ✅ | ❌(Conversion manuelle requise) |
| Intégration avec ML.NET / ONNX | ✅ | ⚠️(Nécessite extraction manuelle de frames) |
| OpenCV Interop | ✅ | ⚠️(Via callbacks vidéo) |
| Accès direct aux textures GPU | ✅ | ❌ |
| Sortie caméra virtuelle | ✅ | ❌ |
Support des plateformes
Compatibilité des systèmes d'exploitation
| Plateforme | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Windows x64 | ✅ | ✅ |
| Windows ARM64 | ✅ | ✅ |
| macOS (Apple Silicon + Intel) | ✅ | ✅ |
| Linux x64 (Ubuntu, Debian, Fedora) | ✅ | ✅ |
| Linux ARM64 (Raspberry Pi) | ✅ | ✅ |
| Android (via .NET MAUI) | ✅ | ✅ |
| iOS (via .NET MAUI) | ✅ | ✅ |
Compatibilité des frameworks UI
| Framework | Video Capture SDK | LibVLCSharp |
|---|---|---|
| WinForms | ✅ | ✅(Contrôle VideoView) |
| WPF | ✅ | ✅(Contrôle VideoView) |
| .NET MAUI | ✅ | ✅(Contrôle VideoView) |
| Avalonia UI | ✅ | ✅(Contrôle VideoView) |
| Console / Service | ✅ | ✅ |
| ASP.NET Core (Service d'arrière-plan) | ✅ | ⚠️(Conception orientée lecture) |
| Blazor (Traitement côté serveur) | ✅ | ⚠️(Capture côté serveur limitée) |
Comparaison des tarifs
Tarifs de Video Capture SDK .NET
1 développeur, usage commercial, 1 an de mises à jour
Jusqu'à 8 développeurs, licence perpétuelle avec mises à jour à vie
All licenses include:
- ✓ Distribution sans redevances
- ✓ Tous les exemples de code source
- ✓ Support prioritaire par ticket
- ✓ Toutes les cibles de plateforme incluses
Coûts de LibVLCSharp
Licence LGPL 2.1 — liaison dynamique requise
Pour liaison statique propriétaire ou utilisation incompatible LGPL
Considérations de conformité LGPL
LibVLCSharp et libvlc sont licenciés sous 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 comprennent :
- ⚠Vous devez lier dynamiquement à libvlc (pas de liaison statique)
- ⚠Vous devez fournir la possibilité aux utilisateurs de remplacer la bibliothèque sous licence LGPL par une version modifiée
- ⚠Vous devez inclure une copie de la licence LGPL et mentionner de manière visible l'utilisation de libvlc
- ⚠Si vous modifiez libvlc lui-même, vous devez publier ces modifications sous LGPL
- ⚠La liaison statique ou certains scénarios embarqués peuvent nécessiter une licence commerciale de VideoLAN
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. Certaines équipes juridiques d'entreprise exigent une licence commerciale pour éviter tout risque de conformité open source.
Exemples de code
Exemple 1 : Enregistrement webcam en MP4
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
// Create the capture engine
var capture = new VideoCaptureCore();
// Set video source (first available webcam)
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Set audio source
var audioDevices = await capture.Audio_CaptureDevice_ListAsync();
capture.Audio_CaptureDevice = audioDevices[0];
// Configure MP4 output with H.264
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 4000,
Profile = H264Profile.Main
},
Audio = new AACEncoderSettings
{
Bitrate = 192
}
};
capture.Output_Filename = "recording.mp4";
// Enable preview
capture.Video_Preview_Enabled = true;
// Start recording with preview
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
// Initialize VLC engine
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam via dshow:// URL
// Note: device name must be known in advance
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
// Add recording via sout transcode chain
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=display" +
"}");
// Set dshow device (string-based)
media.AddOption(
":dshow-vdev=Integrated Camera");
media.AddOption(
":dshow-adev=Microphone (Realtek Audio)");
// Start — no typed API, errors in VLC log
mediaPlayer.Play(media);
// To stop: mediaPlayer.Stop();
// No progress events, no state machineExemple 2 : Enregistrement d'écran avec overlay + streaming
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// Screen capture source
capture.Video_CaptureDevice = new ScreenCaptureSourceSettings
{
FullScreen = true,
FrameRate = 30,
CaptureCursor = true
};
// Add timestamp overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
Text = "{timestamp}",
Position = new System.Drawing.Point(10, 10),
Font = new System.Drawing.Font("Arial", 14),
Color = System.Drawing.Color.White
});
// Add watermark image
capture.Video_Overlays.Add(new VideoOverlayImage
{
Filename = "logo.png",
Position = new System.Drawing.Point(10, 50),
Opacity = 0.7
});
// Record to file
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 8000 }
};
capture.Output_Filename = "screen.mp4";
// Also stream via RTMP
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://streaming-server/live/key"
});
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Screen capture via screen:// URL
using var media = new Media(libVLC,
"screen://",
FromType.FromLocation);
// Configure screen capture
media.AddOption(":screen-fps=30");
media.AddOption(":screen-follow-mouse");
// Record to file via sout
// Note: No overlay support during capture
// Note: No text/image overlay API
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=8000" +
"}:std{" +
"access=file," +
"mux=mp4," +
"dst=screen.mp4" +
"}");
// Cannot simultaneously stream via RTMP
// sout duplicate is fragile and often fails
// for screen capture + streaming combos
// No overlay API — cannot add timestamps
// No watermark support during capture
// No region selection for capture area
mediaPlayer.Play(media);Exemple 3 : Multi-sortie : Enregistrement + Stream + Aperçu
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Primary output: MP4 recording
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 4000 },
Audio = new AACEncoderSettings { Bitrate = 192 }
};
capture.Output_Filename = "recording.mp4";
// Second output: RTMP stream
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://live.server/app/stream_key",
Video = new H264EncoderSettings { Bitrate = 2500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
});
// Third output: Low-res backup
capture.Outputs_Add(new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 1000,
Width = 640,
Height = 360
}
}, "backup.mp4");
// Preview is always available
capture.Video_Preview_Enabled = true;
// All outputs start simultaneously
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
media.AddOption(
":dshow-vdev=Integrated Camera");
// Attempt multi-output via sout duplicate
// WARNING: This is fragile and often fails
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=std{access=rtmp," +
"mux=flv," +
"dst=rtmp://live.server/app/key}," +
"dst=display" +
"}");
// No independent bitrate per output
// No low-res backup option
// Single transcode shared across all outputs
// If one output fails, all may fail
// No typed API — string errors at runtime
mediaPlayer.Play(media);Exemple 4 : Surveillance caméra IP RTSP avec détection
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
var cameras = new List<VideoCaptureCore>();
var cameraUrls = new[]
{
"rtsp://192.168.1.101/stream",
"rtsp://192.168.1.102/stream",
"rtsp://192.168.1.103/stream",
"rtsp://192.168.1.104/stream"
};
foreach (var url in cameraUrls)
{
var cam = new VideoCaptureCore();
cam.IP_Camera_Source = new IPCameraSourceSettings
{
URL = url,
Type = IPCameraType.RTSP,
ReconnectOnFailure = true,
ReconnectDelay = TimeSpan.FromSeconds(5)
};
// Motion detection
cam.Motion_Detection.Enabled = true;
cam.Motion_Detection.Sensitivity = 70;
cam.OnMotionDetected += (s, e) =>
{
Console.WriteLine($"Motion on {url}");
};
// Barcode detection
cam.Barcode_Reader.Enabled = true;
cam.OnBarcodeDetected += (s, e) =>
{
Console.WriteLine($"Barcode: {e.Value}");
};
// Segmented recording
cam.Output_Format = new MP4Output();
cam.Output_Filename = $"cam_{cameras.Count}.mp4";
cam.SegmentedRecording.Enabled = true;
cam.SegmentedRecording.Duration = TimeSpan.FromHours(1);
cameras.Add(cam);
}
foreach (var cam in cameras)
await cam.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
var cameraUrls = new[]
{
"rtsp://192.168.1.101/stream",
"rtsp://192.168.1.102/stream",
"rtsp://192.168.1.103/stream",
"rtsp://192.168.1.104/stream"
};
var players = new List<MediaPlayer>();
foreach (var url in cameraUrls)
{
var player = new MediaPlayer(libVLC);
var media = new Media(libVLC, url,
FromType.FromLocation);
// Record via sout
media.AddOption(
":sout=#transcode{vcodec=h264,vb=2000}" +
":std{access=file,mux=mp4," +
$"dst=cam_{players.Count}.mp4}}");
// No motion detection — not available
// No barcode detection — not available
// No face detection — not available
// No auto-reconnection on stream failure
// No segmented recording support
// Must implement reconnection manually:
player.EndReached += (s, e) =>
{
// Manual reconnect attempt
// ThreadPool.QueueUserWorkItem(_ =>
// player.Play(media));
};
player.Play(media);
players.Add(player);
}
// No event-driven detection
// No managed surveillance features
// Manual process monitoring requiredQuand choisir chaque solution
Choisissez Video Capture SDK quand vous avez besoin de
- ✓Capture professionnelle avec effets vidéo en temps réel et overlays
- ✓Enregistrement multi-sortie + streaming depuis un seul pipeline
- ✓Systèmes de surveillance avec détection de mouvement, visages et codes-barres
- ✓Effets audio en temps réel (40+) pendant la capture
- ✓Sortie caméra virtuelle pour les applications de diffusion
- ✓Support matériel industriel et professionnel (DeckLink, GigE Vision)
- ✓Compositing image dans l'image et chroma key pendant la capture
- ✓Enregistrement d'écran avec sélection de région et overlays
- ✓Une API .NET entièrement typée sans configuration basée sur des chaînes
Choisissez LibVLCSharp quand vous avez besoin de
- ✓Lecture multimédia avec accès basique aux périphériques de capture
- ✓Projets à budget nul où la conformité LGPL est acceptable
- ✓Enregistrement webcam simple sans effets ni détection
- ✓Lecture multimédia multiplateforme dans les applications .NET MAUI
- ✓Projets utilisant déjà l'infrastructure et les flux de travail VLC
- ✓Projets open source compatibles avec la licence LGPL
- ✓Prototypes rapides pour une fonctionnalité basique de capture vidéo
- ✓Applications où la lecture est primaire et la capture est secondaire
Déploiement et distribution
Déploiement de Video Capture SDK
- ✓Le package NuGet inclut toutes les dépendances natives
- ✓Référence NuGet unique — aucun outil externe à installer
- ✓Redistribution sans redevances avec licence commerciale
- ✓Déploiement xcopy / MSIX / ClickOnce supporté
- ✓Conteneurs Docker supportés (Linux et Windows)
- ✓Aucune obligation LGPL — sûr pour les logiciels propriétaires
Déploiement de LibVLCSharp
- ⚠Packages NuGet disponibles (LibVLCSharp + packages de plateforme VideoLAN.LibVLC)
- ⚠Doit inclure les bibliothèques natives VLC spécifiques à la plateforme (~80-150 Mo)
- ⚠La conformité LGPL nécessite une liaison dynamique et un avis de licence
- ⚠Doit fournir un mécanisme pour que les utilisateurs remplacent la bibliothèque libvlc
- ⚠Les packages de plateforme gèrent la distribution des bibliothèques natives
- ⚠La liaison statique nécessite une licence commerciale VideoLAN
Matrice de décision
| Exigence | Video Capture SDK | LibVLCSharp | Gagnant |
|---|---|---|---|
| Application de capture professionnelle | Video Capture SDK | ||
| Multi-sortie (enregistrement + stream) | Video Capture SDK | ||
| Surveillance avec détection | Video Capture SDK | ||
| Effets en temps réel pendant la capture | Video Capture SDK | ||
| Sortie caméra virtuelle | Video Capture SDK | ||
| Matériel industriel / professionnel | Video Capture SDK | ||
| Compositing PiP / chroma key | Video Capture SDK | ||
| 40+ effets audio pendant la capture | Video Capture SDK | ||
| Enregistrement d'écran avec overlays | Video Capture SDK | ||
| Budget de 0 $ (open source) | LibVLCSharp | ||
| Enregistrement webcam simple | LibVLCSharp | ||
| Projet compatible LGPL | LibVLCSharp |
Conclusion
Video Capture SDK .NET
Le Video Capture SDK est un moteur de capture spécialement conçu qui excelle dans les flux de travail professionnels de capture vidéo. Son API .NET typée, son pipeline d'effets intégré, son architecture multi-sortie, ses capacités de détection et son support matériel professionnel en font le choix évident pour les applications où la qualité de capture et les fonctionnalités comptent. La licence commerciale garantit une propriété intellectuelle propre pour la distribution en entreprise.
LibVLCSharp
LibVLCSharp est une excellente bibliothèque de lecture multimédia qui peut également ouvrir des périphériques de capture. Si votre application est principalement axée sur la lecture avec un enregistrement simple occasionnel, LibVLCSharp est une option capable et gratuite. Cependant, sa configuration sout basée sur des chaînes, l'absence d'effets en temps réel et le manque de fonctions de détection signifient que les applications de capture professionnelles nécessitent considérablement plus de développement personnalisé — ou ne peuvent tout simplement pas être construites avec LibVLCSharp seul.
The Reality
Pour la plupart des développeurs .NET construisant des applications centrées sur la capture, le Video Capture SDK fournit des fonctionnalités de niveau professionnel que LibVLCSharp n'a jamais été conçu pour offrir. LibVLCSharp brille en tant que bibliothèque de lecture et constitue un choix raisonnable pour la capture basique lorsque le budget est la principale contrainte. Si votre application a besoin d'effets, de détection, de multi-sortie ou de support matériel professionnel, le Video Capture SDK est le choix pratique.
