Aller au contenu

Video Capture SDK pour C# .NET — API de capture webcam, écran et caméra IP

Video Capture SDK .NET

Introduction

Le Video Capture SDK pour .NET est une API de capture vidéo C# qui vous permet d'enregistrer depuis des webcams, des caméras IP (RTSP/ONVIF) et des écrans dans vos applications .NET. Il remplace le code de capture vidéo DirectShow bas niveau par une API asynchrone moderne — énumérez les périphériques, configurez les sources et démarrez l'enregistrement en quelques lignes de C#.

Le SDK prend en charge l'énumération des périphériques, la négociation des formats, l'encodage accéléré par GPU et la sortie fichier sur Windows, macOS et Linux. Que vous ayez besoin d'enregistrer un flux RTSP dans un fichier, de capturer des photos depuis une webcam ou de créer un outil de capture d'écran, l'API couvre tout cela.

Démarrage rapide

1. Installer les paquets NuGet

dotnet add package VisioForge.DotNet.VideoCapture

Ajoutez les dépendances natives spécifiques à la plateforme :

<!-- Windows x64 -->
<PackageReference Include="VisioForge.CrossPlatform.Core.Windows.x64" Version="2025.11.0" />
<PackageReference Include="VisioForge.CrossPlatform.Libav.Windows.x64" Version="2025.11.0" />

<!-- macOS -->
<PackageReference Include="VisioForge.CrossPlatform.Core.macOS" Version="2025.9.1" />

<!-- Linux x64 -->
<PackageReference Include="VisioForge.CrossPlatform.Core.Linux.x64" Version="2025.11.0" />
<PackageReference Include="VisioForge.CrossPlatform.Libav.Linux.x64" Version="2025.11.0" />

Pour la liste complète des paquets et la prise en charge des frameworks UI (WinForms, WPF, MAUI, Avalonia), consultez le Guide d'installation.

2. Initialiser le SDK

Appelez InitSDKAsync() une seule fois au démarrage de l'application avant d'utiliser la moindre fonctionnalité de capture :

using VisioForge.Core;

await VisioForgeX.InitSDKAsync();

3. Capture C# de webcam vers MP4 (exemple minimal)

using VisioForge.Core;
using VisioForge.Core.VideoCaptureX;
using VisioForge.Core.Types.X.Sources;
using VisioForge.Core.Types.X.Output;

// Créer l'instance de capture liée à un contrôle VideoView
var capture = new VideoCaptureCoreX(videoView);

// Énumérer les périphériques disponibles
var videoDevices = await DeviceEnumerator.Shared.VideoSourcesAsync();
var audioDevices = await DeviceEnumerator.Shared.AudioSourcesAsync();

// Configurer les sources vidéo et audio
capture.Video_Source = new VideoCaptureDeviceSourceSettings(videoDevices[0]);
capture.Audio_Source = audioDevices[0].CreateSourceSettingsVC();
capture.Audio_Record = true;

// Ajouter la sortie MP4 (H.264 + AAC, accélérée par GPU lorsque disponible)
capture.Outputs_Add(new MP4Output("recording.mp4"));

// Démarrer la capture
await capture.StartAsync();

// ... une fois terminé :
await capture.StopAsync();
await capture.DisposeAsync();

4. Nettoyage à l'arrêt

VisioForgeX.DestroySDK();

Flux de travail principal

Toute application de capture suit le même modèle :

  1. Initialiser le SDKVisioForgeX.InitSDKAsync() (une fois par cycle de vie d'application)
  2. Énumérer les périphériquesDeviceEnumerator.Shared.VideoSourcesAsync() / AudioSourcesAsync()
  3. Créer l'objet de capturenew VideoCaptureCoreX(videoView) pour l'aperçu, ou sans vue pour un enregistrement sans interface
  4. Configurer la source — Définir Video_Source sur une webcam, une caméra IP, un écran ou une autre source
  5. Configurer la sortie — Ajouter une ou plusieurs sorties : MP4Output, WebMOutput, AVIOutput, etc.
  6. Démarrerawait capture.StartAsync()
  7. Arrêterawait capture.StopAsync() finalise le fichier de sortie
  8. Libérerawait capture.DisposeAsync() libère toutes les ressources

Scénarios courants de capture vidéo en C

Enregistrer une vidéo webcam en C

Enregistrez depuis une webcam USB ou une caméra intégrée en MP4 avec H.264/AAC :

capture.Video_Source = new VideoCaptureDeviceSourceSettings(device);
capture.Outputs_Add(new MP4Output("webcam.mp4"));

Consultez le tutoriel complet : Enregistrer une vidéo webcam en C#

Enregistrer un flux RTSP dans un fichier en C

Connectez-vous à des caméras IP et enregistrez des flux RTSP dans des fichiers MP4. Prend en charge les protocoles RTSP, ONVIF et HTTP :

// RTSPSourceSettings a un constructeur privé — construisez via la fabrique asynchrone
// pour que la source puisse sonder les codecs avant le démarrage du pipeline.
capture.Video_Source = await RTSPSourceSettings.CreateAsync(
    new Uri("rtsp://192.168.1.100:554/stream"),
    login: "admin",
    password: "password",
    audioEnabled: true);
capture.Outputs_Add(new MP4Output("ipcam.mp4"));

Consultez : Caméra IP vers MP4 | Guide RTSP | Guide ONVIF

Capture d'écran C# vers MP4

Enregistrez le bureau ou une région d'écran spécifique en MP4 :

// La capture d'écran avec le moteur X sous Windows utilise ScreenCaptureD3D11SourceSettings
// (autres plateformes : ScreenCaptureGDISourceSettings, ScreenCaptureMacOSSourceSettings,
// ScreenCaptureXDisplaySourceSettings — toutes implémentent IVideoCaptureBaseVideoSourceSettings).
capture.Video_Source = new ScreenCaptureD3D11SourceSettings
{
    FrameRate     = new VideoFrameRate(30),
    CaptureCursor = true,
};
capture.Outputs_Add(new MP4Output("screen.mp4"));

Consultez : Capture d'écran vers MP4

Enregistrement audio uniquement

Enregistrez depuis un microphone sans vidéo :

capture.Video_Source = null; // désactiver la vidéo pour une capture audio uniquement
capture.Audio_Source = audioDevices[0].CreateSourceSettingsVC();
capture.Audio_Record = true;
capture.Outputs_Add(new MP4Output("audio.mp4"));

Capturer une photo depuis une webcam

Récupérez une image fixe depuis le flux vidéo en direct de la webcam :

capture.Snapshot_Grabber_Enabled = true;
await capture.StartAsync();

// Plus tard, enregistrez une image :
await capture.Snapshot_SaveAsync("photo.jpg", SKEncodedImageFormat.Jpeg, 85);

Consultez : Capture photo webcam

Périphériques d'entrée pris en charge

Caméras et matériel de capture

  • Webcams USB et périphériques de capture (jusqu'à 4K)
  • Caméscopes DV et HDV MPEG-2
  • Cartes de capture PCI professionnelles
  • Tuners TV (avec ou sans encodeur MPEG)

Caméras réseau et IP

  • Caméras IP compatibles RTSP
  • Caméras HTTP JPEG/MJPEG
  • Sources de streaming RTMP
  • Caméras compatibles ONVIF
  • Sources SRT et NDI

Consultez notre répertoire des marques de caméras IP pour les URL RTSP spécifiques à chaque marque et les guides de connexion couvrant plus de 60 fabricants.

Équipements professionnels et industriels

  • Périphériques de capture Blackmagic Decklink
  • Microsoft Kinect et Kinect 2
  • Caméras industrielles GenICam / GigE Vision / USB3 Vision

Sources audio

  • Périphériques de capture audio système et cartes son
  • Périphériques audio ASIO professionnels
  • Capture audio en loopback (son système)

Formats de sortie et encodeurs

Le SDK prend en charge plusieurs conteneurs et codecs de sortie. L'encodage accéléré par GPU (NVIDIA NVENC, AMD AMF, Intel Quick Sync) est utilisé automatiquement lorsqu'il est disponible.

Format Codecs vidéo Codecs audio Cas d'usage
MP4 H.264, H.265 (HEVC) AAC Usage général, compatibilité maximale
WebM VP8, VP9, AV1 Vorbis, Opus Diffusion web, libre de droits
AVI MJPEG, codecs personnalisés PCM, MP3 Compatibilité héritée
MKV H.264, H.265, VP9 AAC, Vorbis, FLAC Conteneur flexible, pistes multiples
GIF GIF animé Clips courts, aperçus

Pour la configuration détaillée des codecs, consultez Formats de sortie et Encodeurs vidéo.

Prise en charge des plateformes

Plateforme Frameworks UI Notes
Windows x64 WinForms, WPF, MAUI, Avalonia, Console Jeu de fonctionnalités complet incluant les sources DirectShow
macOS MAUI, Avalonia, Console Accès caméra AVFoundation
Linux x64 Avalonia, Console Accès caméra V4L2
Android MAUI Via l'intégration caméra MAUI
iOS MAUI Via l'intégration caméra MAUI

Migration depuis la capture vidéo DirectShow

Si vous utilisez actuellement DirectShow (DirectShow.NET) pour la capture vidéo en C#, le Video Capture SDK fournit un remplacement moderne. Au lieu de construire manuellement des graphes de filtres avec IGraphBuilder, de connecter des pins et de gérer des objets COM, vous utilisez des classes de paramètres typées et des méthodes asynchrones.

Concept DirectShow Équivalent Video Capture SDK
Graphe de filtres IGraphBuilder Géré automatiquement par VideoCaptureCoreX
ICaptureGraphBuilder2 Non requis — source et sortie configurées via des propriétés
Énumération de périphériques via DsDevice DeviceEnumerator.Shared.VideoSourcesAsync()
ISampleGrabber pour l'accès aux images Snapshot_SaveAsync() ou événement OnVideoFrameBuffer
Connexion manuelle des pins Automatique — ou utilisez Media Blocks SDK pour des pipelines explicites
Nettoyage COM / Marshal.ReleaseComObject Modèle IAsyncDisposable standard

Pour un guide de migration détaillé avec des exemples de code côte à côte, consultez Migrer depuis DirectShow.NET.

Documentation pour développeurs

Fonctionnalités principales

Fonctionnalités avancées

Tutoriels (pas à pas avec code)

Guides

Intégration

Ressources pour développeurs