Enregistrement d'écran multiplateforme en C# et .NET
Créez un enregistreur d'écran en C# avec une seule API pour Windows, macOS, Linux, Android et iOS : l'écran entier, une fenêtre ou une zone, avec le son, le curseur et la mise en évidence des clics, vers un MP4 ou un flux en direct. Video Capture SDK .NET et Media Blocks SDK .NET utilisent l'API de capture native de chaque plateforme.
À partir de €250/an · licence Lifetime à partir de €750
Une boucle de captures d'écran n'est pas un enregistreur d'écran
Graphics.CopyFromScreen vous donne un seul bitmap sous Windows. Un enregistreur a aussi besoin d'une cadence d'images stable, du curseur, du son, d'un encodeur et d'un fichier dont l'audio reste synchronisé avec la vidéo, et sur chaque autre système d'exploitation l'API de capture est encore différente : AVFoundation ou ScreenCaptureKit sur macOS, X11 sous Linux, MediaProjection sur Android, ReplayKit sur iOS. Dans les SDK VisioForge, l'écran est une source vidéo comme une webcam. ScreenSourceBlock utilise l'API native de la plateforme sur laquelle il s'exécute, et l'encodeur, le fichier et le flux sont le même code partout.
Construire soi-même un enregistreur d'écran multiplateforme ou utiliser le SDK
| Solution maison typique | VisioForge Video Capture SDK .NET et Media Blocks SDK .NET | |
|---|---|---|
| Capturer l'écran | Une API native différente sur chaque OS, chacune derrière votre propre code d'interopérabilité : Desktop Duplication ou Windows Graphics Capture sous Windows, ScreenCaptureKit ou AVFoundation sur macOS, X11 ou PipeWire sous Linux, MediaProjection sur Android, ReplayKit sur iOS | ScreenSourceBlock avec une classe de paramètres par plateforme ; ScreenSourceBlock() sans argument prend la source par défaut de la plateforme |
| Une fenêtre ou une zone | Des identifiants de fenêtre et un code de recadrage qui diffèrent selon l'OS : HWND sous Windows, un ID de fenêtre X11 sous Linux | WindowHandle sous Windows ou XID sous Linux pour une fenêtre, Rectangle pour une zone, MonitorIndex sous Windows ou Monitor sur macOS pour l'écran |
| Curseur et clics | Composer vous-même le curseur et les marques de clic sur chaque image | CaptureCursor sous Windows, macOS et Linux ; MouseHighlight dessine un cercle qui s'agrandit à chaque clic, issu d'un hook souris global sous Windows et transmis par votre code sur les autres plateformes |
| Son | Une API audio distincte par OS pour le microphone, plus le loopback WASAPI pour le son système sous Windows, synchronisé avec la vidéo par votre code | SystemAudioSourceBlock pour un microphone sur toutes les plateformes, LoopbackAudioCaptureDeviceSourceSettings pour le son système sous Windows, sur la même ligne de temps que la vidéo |
| Encodage et fichier | Media Foundation, VideoToolbox et MediaCodec encapsulés un par un, ou une build FFmpeg livrée avec chaque application | H264EncoderBlock choisit MediaCodec, VideoToolbox, ou NVENC, AMF et Quick Sync avec OpenH264 en secours ; sortie MP4, WebM, MKV, MOV, AVI ou MPEG-TS |
| Code à maintenir | Cinq implémentations par plateforme à écrire, tester et maintenir alignées | Un seul pipeline C# ; seuls les paramètres de la source changent selon la plateforme |
La capture d'écran sur chaque plateforme
ScreenSourceBlock() sans argument choisit la source par défaut de la plateforme. Passez un objet de paramètres pour choisir l'API, la fenêtre ou la zone.
| Plateforme | API de capture | Classe de paramètres | Son | Remarques |
|---|---|---|---|---|
| Windows | Windows Graphics Capture, DXGI Desktop Duplication, DirectX 9, GDI | ScreenCaptureD3D11SourceSettings, ScreenCaptureDX9SourceSettings, ScreenCaptureGDISourceSettings | Son système (loopback WASAPI) ou un microphone | Écran, zone ou une fenêtre ; mise en évidence des clics |
| macOS | AVFoundation | ScreenCaptureMacOSSourceSettings | Microphone | Nécessite l'autorisation d'enregistrement de l'écran : ScreenSourceBlock.AskPermissions() |
| Mac Catalyst (.NET MAUI) | ScreenCaptureKit | ScreenCaptureMacOSSourceSettings | Microphone | La même classe de paramètres que sur macOS |
| Linux | X11 | ScreenCaptureXDisplaySourceSettings | Microphone | Nécessite une session X11 ; XID ou XName sélectionne une fenêtre |
| Android | MediaProjection | AndroidScreenCaptureSourceSettings | Microphone | L'utilisateur accepte l'invite système ; l'enregistrement s'exécute dans un service au premier plan |
| iOS | ReplayKit | IOSScreenSourceSettings, IOSBroadcastSourceSettings | Microphone | Votre propre application, ou tout l'appareil via une Broadcast Upload Extension |
Ce que le SDK apporte à un enregistreur d'écran
L'enregistrement de l'écran et du bureau est une source vidéo dans VideoCaptureCoreX (Video Capture SDK .NET) et un ScreenSourceBlock dans Media Blocks SDK .NET. Tout ce qui suit la source fonctionne comme pour une caméra : aperçu, enregistrement, diffusion et effets vidéo.
- Trois modes de capture : l'écran entier de n'importe quel moniteur, une fenêtre d'application par son handle, ou un rectangle du bureau
- Windows Graphics Capture est sélectionné par défaut sous Windows 10 version 1803 et ultérieures ; les sources DXGI Desktop Duplication, DirectX 9 et GDI sont aussi disponibles
- Le son du PC via le loopback WASAPI ou un microphone ; dans Media Blocks SDK .NET, AudioMixerBlock mélange les deux en une seule piste
- Capture du curseur et mise en évidence des clics avec couleur, rayon et durée configurables, pour les tutoriels et les démos. Sous Windows, les clics viennent d'un hook souris global : quand MouseHighlight est défini, VideoCaptureCoreX l'installe au démarrage ; dans Media Blocks, vous appelez MouseHighlightSubscribe(). Sur les autres plateformes, votre code transmet chaque clic à MouseHighlightAddClickEvent (MouseHighlight_AddClickEvent dans VideoCaptureCoreX)
- H.264 matériel : MediaCodec sur Android, VideoToolbox sur les plateformes Apple ; sous Windows, le SDK essaie NVENC, AMF et Quick Sync et se rabat sur OpenH264
- Plusieurs sorties à la fois : enregistrer un MP4 tout en diffusant le même écran sur YouTube via RTMP, SRT ou NDI ; mettre en pause et reprendre un enregistrement ou démarrer un nouveau fichier sans arrêter l'aperçu
- Une seule API sous Windows, macOS, Linux, Android et iOS, depuis WinForms, WPF, .NET MAUI et des applications natives macOS, Android et iOS ; un exemple pour chacune
Cas d'usage
Enregistreurs de tutoriels et d'e-learning
Enregistrez une fenêtre ou tout l'écran avec narration et mise en évidence des clics, et enregistrez la leçon en MP4.
Support et enregistrement de sessions
Enregistrez ce qu'un utilisateur a fait avant l'apparition d'un problème et joignez la vidéo au ticket de support.
QA et automatisation des tests
Enregistrez chaque exécution de tests d'interface automatisés et conservez la vidéo des échecs comme preuve.
Présentations et diffusions en direct
Diffusez l'écran sur YouTube ou vers un récepteur NDI et gardez une copie MP4 locale de la même capture.
Exemples de code
Condensés à partir des démos Screen Capture de Video Capture SDK .NET et Media Blocks SDK .NET. Les deux premiers s'exécutent dans un formulaire WinForms, le troisième dans une page .NET MAUI ; chacun a un VideoView VisioForge nommé videoView1 ou videoView.
Enregistrer l'écran et le son système en MP4
C#Enregistrer une fenêtre avec mise en évidence des clics
C#Un enregistreur pour Windows, macOS, Android et iOS (.NET MAUI)
C#Le pipeline
L'exemple de la fenêtre et l'exemple .NET MAUI utilisent les mêmes quatre blocs. ScreenSourceBlock capture l'écran avec l'API de la plateforme, TeeBlock répartit les images entre l'aperçu et l'encodeur, et MP4SinkBlock écrit le fichier. Seuls les paramètres de la source changent d'une plateforme à l'autre.
Questions fréquentes
Comment enregistrer le son que joue le PC ?▼
Puis-je enregistrer une fenêtre recouverte par d'autres fenêtres ?▼
Cela fonctionne-t-il sur macOS et Linux ?▼
Puis-je enregistrer l'écran sur Android et iOS ?▼
Pourquoi l'enregistrement est-il noir ?▼
De quel SDK ai-je besoin ?▼
Documentation et exemples
Guide de capture d'écran
Capture de l'écran entier, d'une zone et d'une fenêtre avec VideoCaptureCore et VideoCaptureCoreX, configurations multi-écrans et dépannage.
Tutoriel de capture d'écran vers MP4
Tutoriel C# pas à pas avec vidéo : enregistreur en console, audio système et encodeurs GPU.
Screen Capture X Demo (WPF)
Exemple Video Capture SDK .NET : écran, zone ou fenêtre, audio microphone ou loopback, sortie MP4, WebM, AVI, MOV et MPEG-TS.
Screen Capture MB Demo (WPF)
Exemple Media Blocks SDK .NET : capture de l'écran ou d'une fenêtre avec mise en évidence des clics, aperçu et enregistrement MP4.
Source d'écran dans Media Blocks
Référence de ScreenSourceBlock : la classe de paramètres de chaque plateforme et la technologie de capture sous-jacente.
ScreenCaptureMB (.NET MAUI)
Exemple Media Blocks SDK .NET pour Windows, Mac Catalyst, Android et iOS : aperçu de l'écran et enregistrement MP4, avec l'invite MediaProjection sur Android.
Commencez à enregistrer l'écran
Téléchargez la version d'essai complète de 30 jours et lancez les démos Screen Capture. Selon le moteur et la sortie, un filigrane ou un avis de version non enregistrée peut apparaître.
SDK avec enregistrement d'écran
Video Capture SDK .NET
Moteur de capture : écran, fenêtre ou zone avec son système ou microphone, enregistré dans un fichier ou diffusé, avec aperçu.
En savoir plus →Media Blocks SDK .NET
SDK de pipelines : ScreenSourceBlock sous Windows, macOS, Linux, Android et iOS, combiné à votre propre traitement, mixage et sorties.
En savoir plus →À partir de €250/an · licence Lifetime à partir de €750
