Last updated: Janvier 2026
Video Capture SDK .NET vs Medialooks MFormats SDK
Moteur pipeline vs Comparaison de capture basée sur les frames
Choisir entre VisioForge Video Capture SDK .NET et Medialooks MFormats SDK est une décision entre deux modèles architecturaux fondamentalement différents. Le Video Capture SDK utilise un moteur basé sur un pipeline où vous configurez les sources, le traitement et les sorties de manière déclarative, tandis que MFormats suit un modèle basé sur les frames de type capture-traitement-sortie où vous récupérez manuellement chaque frame et le routez. Ce guide compare l'architecture, les fonctionnalités, le support des plateformes, les tarifs et le code réel pour vous aider à faire le bon choix pour votre projet.
Résumé exécutif
| Aspect | Video Capture SDK .NET | MFormats SDK |
|---|---|---|
| Architecture | Double moteur : DirectShow/Media Foundation natif + pipelines FFmpeg intégrées | Boucle capture-traitement-sortie basée sur les frames avec objets COM |
| Support des plateformes | Windows, macOS, Linux, Android, iOS (5 plateformes) | Windows uniquement |
| Tarifs | 250-500 EUR/an (abonnement) ou 1 500 EUR équipe/perpétuelle | ~4 508 $/développeur/an (abonnement obligatoire) |
| Idéal pour | Apps de capture multiplateforme, pipelines multi-sorties, effets vidéo, détection | SDI broadcast multi-vendeurs, overlays HTML5 CG, workflows playlist/playout |
| Matériel SDI | Support Blackmagic DeckLink | Blackmagic, AJA, Bluefish444, Deltacast SDI multi-vendeurs |
| Frameworks UI | WinForms, WPF, MAUI, Avalonia, Uno, Console, Blazor | WinForms, WPF, Console |
| Modèle de licence | Perpétuelle ou abonnement annuel ; fonctionne après expiration | Abonnement annuel uniquement ; filigrane ajouté si l'abonnement expire |
| Support | Système de tickets dédié, SLA prioritaire | Support par email, forum |
Analyse approfondie de l'architecture
Architecture du Video Capture SDK .NET
Le Video Capture SDK utilise une conception basée sur un pipeline. Vous configurez la source, les étapes de traitement et les sorties de manière déclarative. Le moteur assemble automatiquement le graphe de filtres interne, gérant le threading, la synchronisation et la gestion des tampons. Un double moteur encapsule DirectShow/Media Foundation pour l'accès natif aux appareils et un pipeline FFmpeg intégré pour les codecs avancés et l'ingestion de caméras IP.
- ▶Configuration déclarative du pipeline : définir les propriétés, appeler StartAsync()
- ▶Double moteur : APIs de capture natives du système + FFmpeg intégré
- ▶Aperçu accéléré par GPU via les moteurs de rendu Direct3D / OpenGL
- ▶Architecture événementielle avec support .NET async/await
- ▶Modèle à processus unique avec gestion automatique des threads
- ▶Multi-sortie depuis un pipeline : enregistrement + streaming + capture d'écran simultanément
Architecture du MFormats SDK
MFormats utilise un modèle basé sur les frames de type capture-traitement-sortie construit sur des objets COM. Vous créez un MFReader pour capturer les frames, traitez chaque frame via des objets MFTransform, et les envoyez aux sorties MFWriter ou MFRenderer. Cela offre un contrôle granulaire par frame mais nécessite d'écrire la boucle de capture, de gérer le threading et de gérer le timing des frames manuellement.
- ▶Boucle basée sur les frames : capturer le frame depuis MFReader, traiter, envoyer à MFWriter
- ▶Architecture basée sur COM avec wrappers d'interopérabilité .NET
- ▶Gestion manuelle du threading et du timing des frames requise
- ▶Contrôle par frame permettant une logique de routage personnalisée
- ▶Objets séparés pour chaque étape du pipeline (Reader, Transform, Writer, Renderer)
- ▶Playout et planification de playlists intégrés pour les workflows de broadcast
Différences architecturales clés
| Aspect | Video Capture SDK | MFormats SDK |
|---|---|---|
| Modèle de programmation | Pipeline déclaratif : configurer et démarrer | Boucle impérative : capturer, traiter, sortir par frame |
| Threading | Gestion automatique interne des threads | Le développeur gère le threading de la boucle de capture |
| Routage des frames | Automatique via la configuration du pipeline | Routage manuel par frame dans le code |
| Multi-sortie | Sorties simultanées intégrées depuis un pipeline | Le développeur clone les frames et les route vers plusieurs writers |
| Plateforme | Multiplateforme (.NET 6-10, MAUI) | Windows uniquement (basé sur COM) |
| Modèle d'objets | API managée .NET pure | Interopérabilité COM avec wrappers .NET |
Comparaison fonctionnalité par fonctionnalité
Sources de capture
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Webcams USB | ✅ | ✅ |
| Capture d'écran / bureau | ✅ | ✅ |
| Caméras IP (RTSP/ONVIF) | ✅ | ✅ |
| Blackmagic DeckLink SDI | ✅ | ✅ |
| Cartes SDI AJA | ❌ | ✅ |
| Cartes SDI Bluefish444 | ❌ | ✅ |
| Cartes SDI Deltacast | ❌ | ✅ |
| Tuners TV (BDA/DVB) | ✅ | ❌ |
| Sources NDI | ✅ | ✅ |
| Caméras industrielles (GenICam/GigE Vision) | ✅ | ❌ |
| Caméras virtuelles (OBS Virtual Cam) | ✅ | ⚠️(Via DirectShow) |
Enregistrement et sortie
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| MP4 (H.264 / H.265) | ✅ | ✅ |
| Conteneur MXF | ⚠️ | ✅(MFormats performant en MXF broadcast) |
| Conteneur MKV | ✅ | ❌ |
| WebM (VP8 / VP9 / AV1) | ✅ | ❌ |
| AVI | ✅ | ✅ |
| MOV (ProRes) | ✅ | ✅ |
| WMV / ASF | ✅ | ✅ |
| MPEG-TS | ✅ | ✅ |
| GIF animé | ✅ | ❌ |
| Audio uniquement (MP3, AAC, WAV, FLAC) | ✅ | ⚠️ |
| Enregistrement Pré-Événement (Buffer Circulaire) | ✅ | ❌ |
Multi-sortie
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Enregistrement + streaming simultanés | ✅ | ✅ |
| Sorties d'enregistrement multiples indépendantes | ✅ | ⚠️(Nécessite le clonage manuel des frames) |
| Contrôle de sortie indépendant (démarrer/arrêter/pause chacune) | ✅ | ⚠️(Contrôle manuel par writer) |
| Codecs différents par sortie | ✅ | ✅ |
| Capture d'image pendant l'enregistrement | ✅ | ✅ |
Streaming
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| RTMP Push | ✅ | ✅ |
| Serveur RTSP | ✅ | ❌ |
| Streaming SRT | ✅ | ✅ |
| Sortie HLS | ✅ | ⚠️ |
| Sortie NDI | ✅ | ✅ |
| UDP / TCP Multicast | ✅ | ✅ |
Traitement vidéo et effets
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Redimensionnement / recadrage en temps réel | ✅ | ✅ |
| Désentrelacement | ✅ | ✅ |
| Ajustement des couleurs | ✅ | ✅ |
| Overlays texte / image | ✅ | ✅ |
| Overlays HTML5 CG | ❌ | ✅ |
| Chroma Key (fond vert) | ✅ | ✅ |
| Effets vidéo accélérés par GPU (40+) | ✅ | ⚠️(Effets intégrés limités) |
| Image dans l'image | ✅ | ✅ |
| Transitions et volets | ✅ | ✅ |
Audio
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Capture de périphérique audio | ✅ | ✅ |
| Mixage audio (entrées multiples) | ✅ | ✅ |
| Effets audio (40+ intégrés : EQ, compresseur, réverbération, etc.) | ✅ | ❌ |
| VU-mètre / surveillance de niveau | ✅ | ✅ |
| Capture audio système (loopback) | ✅ | ⚠️ |
| Routage audio intégré (SDI) | ✅ | ✅ |
Détection et analyse
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Détection de mouvement | ✅ | ❌ |
| Détection de visages | ✅ | ❌ |
| Lecture de codes-barres / QR | ✅ | ❌ |
| Suivi d'objets | ✅ | ❌ |
| Détection de niveau audio | ✅ | ✅ |
Broadcast et playout
| Fonctionnalité | Video Capture SDK | MFormats SDK |
|---|---|---|
| Planification de playlist / playout | ❌ | ✅ |
| Sortie SDI multi-vendeurs | ⚠️ | ✅(MFormats supporte les sorties AJA, Bluefish, Deltacast) |
| Overlays HTML5 CG (générateur de caractères) | ❌ | ✅ |
| Sortie caméra virtuelle | ✅ | ❌ |
| Genlock / synchronisation de référence | ❌ | ✅ |
Support des plateformes
Compatibilité des systèmes d'exploitation
| Plateforme | Video Capture SDK | MFormats SDK |
|---|---|---|
| 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 | MFormats SDK |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| .NET MAUI | ✅ | ❌ |
| Avalonia UI | ✅ | ❌ |
| Uno Platform | ✅ | ❌ |
| Console / Service | ✅ | ✅ |
| Blazor (Server-Side) | ✅ | ❌ |
Comparaison des tarifs
Tarifs du Video Capture SDK .NET
1 développeur, usage commercial, mises à jour et support annuels
Jusqu'à 3 développeurs, licence perpétuelle, 1 an de mises à jour inclus
Jusqu'à 8 développeurs, licence perpétuelle, 1 an de mises à jour inclus
All licenses include:
- ✓ Distribution sans redevances
- ✓ Tous les exemples de code source
- ✓ Support prioritaire par tickets
- ✓ Toutes les cibles de plateforme incluses
- ✓ Option perpétuelle : continuez à utiliser après l'expiration de l'abonnement (sans filigrane)
Tarifs du MFormats SDK
Abonnement annuel, développeur unique, Windows uniquement
5 postes développeur, engagement d'abonnement de 3 ans
Peut nécessiter des frais d'exécution par déploiement selon la configuration
Avertissement d'expiration d'abonnement
MFormats SDK utilise un modèle d'abonnement annuel obligatoire. Si votre abonnement expire ou n'est pas renouvelé :
- ⚠Un filigrane est automatiquement ajouté à toutes les sorties vidéo
- ⚠Vous ne pouvez pas continuer à utiliser le SDK en production sans abonnement actif
- ⚠Il n'existe pas d'option de licence perpétuelle de secours
- ⚠Vos applications déployées afficheront des filigranes si le serveur de licences ne peut pas valider
Le Video Capture SDK offre des licences perpétuelles qui continuent de fonctionner indéfiniment après l'achat, sans pénalités de filigrane pour les renouvellements expirés.
Exemples de code
Exemple 1 : Capture 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();MFormats SDK
C#// MFormats: Frame-based capture loop
MFDeviceClass devClass = new MFDeviceClass();
MFReaderClass reader = new MFReaderClass();
MFWriterClass writer = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure video device
reader.DeviceSet(eMFDeviceType.eMFDT_Video, 0, "");
reader.DeviceSet(eMFDeviceType.eMFDT_Audio, 0, "");
// Configure writer output
writer.WriterSet("recording.mp4", 0, "");
// You must run the capture loop yourself
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Preview
renderer.RenderSet("preview", frame, "");
// Write to file
writer.WriterPut(frame, "");
// Release frame manually
Marshal.ReleaseComObject(frame);
}
Thread.Sleep(1); // Manual timing
}Exemple 2 : Caméra IP avec overlay + streaming
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// IP camera source
capture.IP_Camera_Source = new IPCameraSourceSettings
{
URL = "rtsp://192.168.1.100:554/stream",
Type = IPCameraType.RTSP
};
// Add text overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
Text = "{timestamp} - Camera 1",
Position = new System.Drawing.Point(10, 10),
Font = new System.Drawing.Font("Arial", 14),
Color = System.Drawing.Color.White
});
// Stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://streaming-server/live",
StreamKey = "stream_key",
Video = new H264EncoderSettings { Bitrate = 4500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
};
// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();
await capture.StartAsync();MFormats SDK
C#// MFormats: Manual frame loop with overlay + streaming
MFReaderClass reader = new MFReaderClass();
MFWriterClass localWriter = new MFWriterClass();
MFWriterClass rtmpWriter = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure RTSP source
reader.ReaderOpen("rtsp://192.168.1.100:554/stream", "");
// Configure outputs
localWriter.WriterSet("backup.mp4", 0, "");
rtmpWriter.WriterSet("rtmp://streaming-server/live/stream_key", 0, "");
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Add overlay manually via MFTransform
MFOverlayClass overlay = new MFOverlayClass();
overlay.OverlayTextSet(frame,
DateTime.Now.ToString() + " - Camera 1",
10, 10, 14, "Arial", 0xFFFFFF, 0, "");
// Clone frame for second output
MFFrame clone;
frame.MFClone(out clone, eMFrameClone.eMFC_Full, eMFCC.eMFCC_Default);
// Write to local file
localWriter.WriterPut(frame, "");
// Write to RTMP stream
rtmpWriter.WriterPut(clone, "");
Marshal.ReleaseComObject(clone);
Marshal.ReleaseComObject(frame);
}
}Quand choisir chaque solution
Choisissez Video Capture SDK quand vous avez besoin de
- ✓Applications de capture multiplateforme (Windows, macOS, Linux, mobile)
- ✓Architecture basée sur un pipeline avec gestion automatique des threads et des tampons
- ✓40+ effets vidéo et audio accélérés par GPU intégrés
- ✓Détection de mouvement, de visages et lecture de codes-barres pendant la capture
- ✓Sortie caméra virtuelle pour intégration OBS, Zoom, Teams
- ✓Licence économique avec option de licence perpétuelle
- ✓Sorties multiples indépendantes avec contrôle individuel de démarrage/arrêt
- ✓Support de caméras industrielles (GenICam, GigE Vision)
- ✓Support de tuner TV et capture DVB
Choisissez MFormats SDK quand vous avez besoin de
- ✓Support SDI multi-vendeurs : AJA, Bluefish444, Deltacast en plus de Blackmagic
- ✓Playout broadcast avec planification de playlists et automatisation
- ✓Overlays CG (générateur de caractères) HTML5 pour le broadcast en direct
- ✓Genlock et synchronisation de référence pour les environnements de studio broadcast
- ✓Contrôle manuel par frame sur chaque étape de traitement
- ✓Format conteneur MXF avec support complet des métadonnées broadcast
- ✓Intégration avec l'infrastructure broadcast existante et les routeurs SDI
Matrice de décision
| Exigence | Video Capture SDK | MFormats SDK | Gagnant |
|---|---|---|---|
| Support multiplateforme | Video Capture SDK | ||
| Multi-sortie avec contrôle indépendant | Video Capture SDK | ||
| Effets audio (40+ intégrés) | Video Capture SDK | ||
| Effets vidéo GPU | Video Capture SDK | ||
| Détection mouvement / visages / codes-barres | Video Capture SDK | ||
| Sortie caméra virtuelle | Video Capture SDK | ||
| Budget inférieur à 2 000 EUR | Video Capture SDK | ||
| Option de licence perpétuelle | Video Capture SDK | ||
| Caméras industrielles (GenICam) | Video Capture SDK | ||
| Tuner TV / capture DVB | Video Capture SDK | ||
| SDI multi-vendeurs (AJA, Bluefish444) | MFormats SDK | ||
| Overlays HTML5 CG pour broadcast | MFormats SDK |
Conclusion
Video Capture SDK .NET
Le Video Capture SDK excelle en tant que moteur de capture multiplateforme basé sur un pipeline pour les développeurs .NET qui ont besoin d'un traitement vidéo riche, de fonctionnalités de détection, de sorties multiples indépendantes et d'un large support d'appareils. Son API déclarative, ses 40+ effets GPU et sa licence perpétuelle en font le choix le plus rentable pour la plupart des applications de capture, du bureau au mobile.
MFormats SDK
MFormats SDK est un choix solide pour les workflows centrés sur le broadcast nécessitant un support matériel SDI multi-vendeurs (AJA, Bluefish444, Deltacast), des overlays HTML5 CG et une automatisation de playout basée sur des playlists. Son architecture basée sur les frames offre un contrôle granulaire par frame adapté aux environnements broadcast professionnels. Cependant, il est limité à Windows, nettement plus cher et ajoute des filigranes si l'abonnement expire.
The Reality
Pour la majorité des projets de capture vidéo .NET — en particulier ceux nécessitant un support multiplateforme, des fonctionnalités de détection ou un modèle de licence économique — le Video Capture SDK est le choix évident. MFormats trouve sa place spécifiquement dans les studios broadcast SDI multi-vendeurs où l'intégration matérielle AJA/Bluefish et les workflows d'overlay CG sont essentiels.
