Last updated: Janvier 2026
Video Capture SDK .NET vs Datastead TVideoGrabber
Comparaison complète des composants de capture vidéo .NET
Choisir le bon composant de capture vidéo pour votre application .NET détermine les capacités et les coûts à long terme de votre projet. Ce guide fournit une comparaison détaillée entre VisioForge Video Capture SDK .NET — une plateforme de capture moderne à double moteur prenant en charge cinq systèmes d'exploitation — et Datastead TVideoGrabber, un composant de capture mature basé sur DirectShow pour Windows. Nous examinons l'architecture, les fonctionnalités, le support multi-sortie, le streaming, les tarifs et le code réel pour vous aider à prendre une décision éclairée.
Résumé exécutif
| Aspect | Video Capture SDK .NET | TVideoGrabber |
|---|---|---|
| Architecture | Double moteur : DirectShow/Media Foundation natif + pipelines FFmpeg intégrés | Moteur unique : composant basé sur les propriétés DirectShow |
| Support des plateformes | Windows, macOS, Linux, Android, iOS (5 plateformes) | Windows uniquement |
| Tarifs | EUR 489 – EUR 6 999/an (toutes fonctionnalités incluses) | EUR 695 base + EUR 950 NDI + EUR 950 module encodeur = EUR 2 595+ pour des fonctionnalités comparables |
| Idéal pour | Applications de capture multiplateforme avec streaming, multi-sortie et effets en temps réel | Capture mono-sortie Windows uniquement avec besoins OCR |
| Style d'API | API .NET async-first avec événements et patterns await | Modèle de composant basé sur les propriétés avec appels synchrones |
Analyse approfondie de l'architecture
Architecture du Video Capture SDK .NET
Le Video Capture SDK utilise une conception à double moteur. Le moteur principal encapsule DirectShow et Media Foundation sous Windows, offrant un accès natif à chaque périphérique de capture exposé par le système d'exploitation. Un pipeline FFmpeg secondaire intégré gère les opérations avancées de codec, l'ingestion de caméras IP et l'enregistrement multiplateforme. Les deux moteurs partagent une surface d'API .NET unifiée, donc 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
- ▶FFmpeg intégré pour la flexibilité des codecs sans dépendances CLI externes
- ▶Aperçu accéléré par GPU via les renderers Direct3D / OpenGL
- ▶Architecture événementielle avec support async/await .NET
- ▶Modèle mono-processus — aucune gestion de processus enfants requise
- ▶Support multiplateforme : Windows, macOS, Linux, Android, iOS
Architecture de TVideoGrabber
TVideoGrabber est un composant mono-moteur basé sur DirectShow développé par Datastead. Il expose les propriétés des périphériques de capture et les paramètres d'enregistrement via une API basée sur les propriétés. La configuration se fait en définissant les propriétés du composant avant de démarrer la capture, suivant un modèle traditionnel de composant Delphi/VCL adapté pour .NET.
- ▶Graphe de filtres DirectShow pour l'accès aux périphériques et l'enregistrement sous Windows
- ▶Modèle de configuration basé sur les propriétés (définir les propriétés, puis démarrer)
- ▶Support intégré du contrôle de caméra ONVIF PTZ
- ▶Reconnaissance de texte OCR pendant la capture (fonctionnalité unique)
- ▶Modules complémentaires optionnels pour NDI et encodage avancé
- ▶Windows uniquement — pas de support macOS, Linux ni mobile
Différences architecturales clés
| Aspect | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Conception du moteur | Double moteur (DirectShow/MF + FFmpeg) | Moteur unique (DirectShow uniquement) |
| Portée des plateformes | 5 systèmes d'exploitation, 7 frameworks UI | Windows uniquement, WinForms/WPF |
| Modèle d'API | Async/await, événements, objets managés | Basé sur les propriétés, appels synchrones |
| Multi-sortie | Enregistrement + stream + snapshot simultanés | Une seule sortie à la fois |
| Streaming | RTMP, RTSP, SRT, HLS, NDI intégrés | Aucun protocole de streaming inclus |
| Modèle de modules | Toutes les fonctionnalités incluses dans la licence | Base + modules payants (NDI EUR 950, Encodeur EUR 950) |
Comparaison fonctionnalité par fonctionnalité
Sources de capture
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Webcams USB | ✅ | ✅ |
| Caméras intégrées d'ordinateur portable | ✅ | ✅ |
| Capture d'écran / bureau | ✅ | ✅ |
| Caméras IP (RTSP/ONVIF) | ✅ | ✅ |
| Contrôle ONVIF PTZ | ✅ | ✅ |
| Cartes de capture (Blackmagic, Magewell) | ✅ | ⚠️(Via DirectShow uniquement) |
| Tuners TV (BDA/DVB) | ✅ | ⚠️(Support limité) |
| Sources NDI | ✅ | ⚠️(Nécessite un module à EUR 950) |
| Caméras virtuelles (OBS Virtual Cam) | ✅ | ✅ |
| Entrée DECKLINK | ✅ | ❌ |
Enregistrement
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| MP4 (H.264 / H.265) | ✅ | ✅ |
| Conteneur MKV | ✅ | ❌ |
| WebM (VP8 / VP9 / AV1) | ✅ | ❌ |
| AVI | ✅ | ✅ |
| WMV / ASF | ✅ | ✅ |
| MOV (ProRes) | ✅ | ❌ |
| MPEG-TS | ✅ | ⚠️(Support limité du conteneur) |
| GIF animé | ✅ | ❌ |
| Audio uniquement (MP3, AAC, WAV) | ✅ | ⚠️ |
| Découpage de fichier par temps/taille | ✅ | ❌ |
| Enregistrement Pré-Événement (Buffer Circulaire) | ✅ | ❌ |
Multi-sortie
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Enregistrement + stream simultanés | ✅ | ❌ |
| Sorties d'enregistrement multiples | ✅ | ❌ |
| Enregistrement + snapshot simultanés | ✅ | ⚠️(Support basique de snapshot) |
| Résolutions différentes par sortie | ✅ | ❌ |
| Sortie caméra virtuelle | ✅ | ❌ |
| Timeshift / lecture différée | ✅ | ❌ |
Protocoles de streaming
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| RTMP Push (YouTube, Twitch) | ✅ | ❌ |
| Mode serveur RTSP | ✅ | ❌ |
| SRT (Caller / Listener) | ✅ | ❌ |
| Génération de segments HLS | ✅ | ❌ |
| Sortie NDI | ✅ | ❌ |
| UDP / TCP Unicast / Multicast | ✅ | ❌ |
Traitement vidéo
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Redimensionnement / recadrage en temps réel | ✅ | ✅ |
| Désentrelacement | ✅ | ✅ |
| Ajustement des couleurs (luminosité, contraste) | ✅ | ✅ |
| Incrustation de texte (horodatage, filigrane) | ✅ | ✅ |
| Incrustation d'image / logo | ✅ | ✅ |
| Effets vidéo accélérés par GPU | ✅ | ❌ |
| Chroma Key (fond vert) | ✅ | ❌ |
| Picture-in-Picture | ✅ | ❌ |
Audio
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Capture de périphérique audio | ✅ | ✅ |
| Capture audio système (Loopback) | ✅ | ❌ |
| Mixage audio (entrées multiples) | ✅ | ❌ |
| Contrôle du volume / gain en temps réel | ✅ | ⚠️ |
| Effets audio (écho, réverbération) | ✅ | ❌ |
| VU-mètre / surveillance de niveau | ✅ | ⚠️ |
Détection et analyse
| Fonctionnalité | Video Capture SDK | TVideoGrabber |
|---|---|---|
| Détection de mouvement | ✅ | ✅ |
| Détection de visage | ✅ | ❌ |
| Lecture de codes-barres / QR | ✅ | ❌ |
| Reconnaissance de texte OCR | ❌ | ✅ |
| Suivi d'objets | ✅ | ❌ |
| Détection de niveau audio | ✅ | ⚠️ |
Support des plateformes
Compatibilité des systèmes d'exploitation
| Plateforme | Video Capture SDK | TVideoGrabber |
|---|---|---|
| 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 | TVideoGrabber |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| .NET MAUI | ✅ | ❌ |
| Avalonia UI | ✅ | ❌ |
| Console / Service | ✅ | ❌ |
| ASP.NET Core (service en arrière-plan) | ✅ | ❌ |
| Blazor (traitement côté serveur) | ✅ | ❌ |
Comparaison des tarifs
Tarifs du Video Capture SDK .NET
1 développeur, usage non commercial
1 développeur, usage commercial, toutes fonctionnalités incluses
Jusqu'à 3 développeurs, usage commercial, 1 an de mises à jour
Jusqu'à 8 développeurs, usage commercial, 1 an de mises à jour
All licenses include:
- ✓ Distribution sans redevance
- ✓ Toutes les fonctionnalités incluses (streaming, NDI, effets GPU, multi-sortie)
- ✓ Tous les exemples de code source
- ✓ Support prioritaire par ticket
- ✓ Les 5 plateformes cibles incluses
Tarifs de TVideoGrabber
Capture mono-sortie, fonctionnalités de base, Windows uniquement
Ajoute le support source/sortie NDI
Ajoute le support d'encodage matériel avancé
Tous les modules combinés — toujours Windows uniquement, pas de streaming, sortie unique
Coût total de possession
En comparant des ensembles de fonctionnalités équivalents, le tableau des prix change considérablement. Une licence TVideoGrabber avec tous les modules coûte EUR 2 595 et offre une capture mono-sortie Windows uniquement. Le Video Capture SDK Professional à EUR 1 000 inclut le support multiplateforme, le streaming, la multi-sortie, les effets GPU et plus — à moins de la moitié du prix.
- ⚠SDK Professional (EUR 1 000) inclut tout vs. pack complet TVideoGrabber (EUR 2 595) avec des lacunes
- ⚠SDK inclut les protocoles de streaming (RTMP, SRT, HLS) — TVideoGrabber n'en a aucun à aucun prix
- ⚠SDK inclut l'enregistrement multi-sortie — TVideoGrabber n'en a aucun à aucun prix
- ⚠SDK couvre 5 plateformes — TVideoGrabber couvre Windows uniquement
- ⚠SDK inclut les effets accélérés par GPU — TVideoGrabber n'a qu'un traitement basique
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();TVideoGrabber
C#// TVideoGrabber — property-based approach
var grabber = new TVideoGrabber();
// Select video device by index
grabber.VideoDevice = 0;
// Select audio device by index
grabber.AudioDevice = 0;
// Set recording mode
grabber.RecordingMethod = TRecordingMethod.rmMP4;
// Set output filename
grabber.RecordingFileName = "recording.mp4";
// Set video bitrate
grabber.VideoBitrate = 4000000;
// Set audio bitrate
grabber.AudioBitrate = 192000;
// Start capture and recording
grabber.StartPreview();
grabber.StartRecording();
// Note: Properties set before starting
// No async/await — synchronous calls
// Single output onlyExemple 2 : Caméra IP avec contrôle ONVIF PTZ
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
var capture = new VideoCaptureCore();
// Connect to ONVIF IP camera
capture.IP_Camera_Source = new IPCameraSourceSettings
{
URL = "rtsp://192.168.1.100:554/stream",
Login = "admin",
Password = "password",
Type = IPCameraType.RTSP
};
// ONVIF PTZ control
var ptz = new ONVIFPTZController(
"192.168.1.100", "admin", "password");
await ptz.MoveAsync(PanDirection.Left, TiltDirection.Up, 0.5);
await ptz.ZoomAsync(ZoomDirection.In, 0.3);
await ptz.GoToPresetAsync("entrance");
// Record while controlling PTZ
capture.Output_Format = new MP4Output();
capture.Output_Filename = "camera_feed.mp4";
// Simultaneously stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://stream.example.com/live",
StreamKey = "KEY"
};
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — ONVIF PTZ support
var grabber = new TVideoGrabber();
// Set IP camera URL
grabber.IPCameraURL = "rtsp://192.168.1.100:554/stream";
grabber.IPCameraLogin = "admin";
grabber.IPCameraPassword = "password";
// ONVIF PTZ — built-in support
grabber.ONVIF_PTZ_Move(
ePTZ_Direction.Left, 50);
grabber.ONVIF_PTZ_Zoom(
ePTZ_ZoomDirection.In, 30);
grabber.ONVIF_PTZ_GotoPreset("entrance");
// Record to file
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "camera_feed.mp4";
grabber.StartPreview();
grabber.StartRecording();
// Note: No streaming capability
// Cannot simultaneously record + stream
// PTZ control is a strong point
// Windows onlyExemple 3 : Enregistrement multi-sortie + streaming
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
var capture = new VideoCaptureCore();
// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Output 1: High-quality local recording
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 8000,
Profile = H264Profile.High
}
};
capture.Output_Filename = "archive.mp4";
// Output 2: Stream to YouTube via RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://a.rtmp.youtube.com/live2",
StreamKey = "YOUR_KEY",
Video = new H264EncoderSettings { Bitrate = 4500 }
};
// Output 3: Low-res recording for thumbnails
capture.AdditionalOutputs.Add(new OutputConfig
{
Filename = "preview.mp4",
Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 1000,
Width = 640, Height = 360
}
}
});
// All three outputs run simultaneously
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — single output only
var grabber = new TVideoGrabber();
// Select video device
grabber.VideoDevice = 0;
// Can only record to ONE file at a time
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "archive.mp4";
grabber.VideoBitrate = 8000000;
grabber.StartPreview();
grabber.StartRecording();
// LIMITATIONS:
// - Cannot stream while recording
// - Cannot record multiple files simultaneously
// - No RTMP/SRT/HLS streaming support
// - No additional outputs at different resolutions
// - To stream, you would need a separate tool
// alongside TVideoGrabber
//
// Multi-output and streaming are simply
// not available in TVideoGrabber at any
// price point.Exemple 4 : Détection de mouvement avec enregistrement
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
var capture = new VideoCaptureCore();
// Set video source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Enable motion detection
capture.Motion_Detection.Enabled = true;
capture.Motion_Detection.Sensitivity = 70;
capture.Motion_Detection.HighlightMotion = true;
capture.Motion_Detection.HighlightColor = Color.Red;
// Motion event handler
capture.OnMotionDetected += (s, e) =>
{
Console.WriteLine(
$"Motion at {DateTime.Now}: " +
$"Level={e.Level:P0}");
// Start recording on motion
if (!capture.IsRecording)
{
capture.Output_Filename =
$"motion_{DateTime.Now:yyyyMMdd_HHmmss}.mp4";
capture.StartRecording();
}
};
// Configure output
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 4000,
UseHardwareEncoder = true
}
};
// Start preview with detection
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — motion detection
var grabber = new TVideoGrabber();
// Select video device
grabber.VideoDevice = 0;
// Enable motion detection
grabber.MotionDetection_Enabled = true;
grabber.MotionDetection_Sensitivity = 70;
// Motion event
grabber.OnMotionDetected += (s, e) =>
{
Console.WriteLine(
$"Motion detected at {DateTime.Now}");
};
// Set recording format
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "motion.mp4";
grabber.StartPreview();
// Note: TVideoGrabber does support
// basic motion detection — this is
// a shared capability.
// However, no motion highlight overlay,
// no hardware encoding toggle,
// no dynamic filename switching,
// no simultaneous stream on motion.Matrice de décision
| Exigence | Video Capture SDK | TVideoGrabber | Gagnant |
|---|---|---|---|
| Multiplateforme (Windows, Mac, Linux, mobile) | Video Capture SDK | ||
| Multi-sortie (enregistrer + diffuser simultanément) | Video Capture SDK | ||
| Effets audio en temps réel | Video Capture SDK | ||
| Effets vidéo accélérés par GPU | Video Capture SDK | ||
| Streaming RTMP / HLS / SRT | Video Capture SDK | ||
| Sortie caméra virtuelle | Video Capture SDK | ||
| Découpage de fichier / timeshift | Video Capture SDK | ||
| Encodage matériel (NVENC, QSV) | Video Capture SDK | ||
| NDI sans coût supplémentaire | Video Capture SDK | ||
| OCR pendant la capture | TVideoGrabber |
Conclusion
Video Capture SDK .NET
Le Video Capture SDK offre une plateforme de capture moderne et complète couvrant cinq systèmes d'exploitation, sept frameworks UI et incluant toutes les fonctionnalités — streaming, multi-sortie, effets GPU, NDI et encodage matériel — dans une seule licence à partir de EUR 1 000. Pour les équipes qui développent des applications de capture multiplateforme ou tout projet nécessitant du streaming et de l'enregistrement multi-sortie, le SDK offre significativement plus de valeur à un coût total inférieur à TVideoGrabber avec ses modules complémentaires.
TVideoGrabber
TVideoGrabber est un composant de capture mature réservé à Windows avec une solide intégration DirectShow et une capacité OCR unique. C'est un choix raisonnable pour les projets de capture simples Windows uniquement nécessitant la reconnaissance de texte à partir du flux vidéo. Cependant, l'absence de streaming, de support multi-sortie, de compatibilité multiplateforme et le coût élevé des modules (EUR 2 595 au total) limitent son attrait pour le développement d'applications modernes.
The Reality
Pour les projets Windows uniquement avec des besoins OCR et sans besoin de streaming ni de multi-sortie, TVideoGrabber est une option viable. Pour pratiquement tout autre scénario de capture vidéo — multiplateforme, streaming, multi-sortie, effets GPU ou développement soucieux des coûts — le Video Capture SDK est le choix le plus solide à un prix total inférieur.
