Plattformübergreifende Bildschirmaufnahme in C# und .NET
Bauen Sie einen Bildschirmrekorder in C# mit einer API für Windows, macOS, Linux, Android und iOS: den ganzen Bildschirm, ein Fenster oder einen Bereich, mit Ton, Mauszeiger und Klick-Hervorhebung, als MP4 oder Livestream. Video Capture SDK .NET und Media Blocks SDK .NET nutzen auf jeder Plattform deren native Aufnahme-API.
Ab €250/Jahr · Lifetime-Lizenz ab €750
Eine Screenshot-Schleife ist kein Bildschirmrekorder
Graphics.CopyFromScreen liefert unter Windows ein einzelnes Bitmap. Ein Rekorder braucht außerdem eine stabile Bildrate, den Mauszeiger, Ton, einen Encoder und eine Datei, deren Ton synchron zum Bild bleibt – und auf jedem anderen Betriebssystem ist die Aufnahme-API wieder eine andere: AVFoundation oder ScreenCaptureKit unter macOS, X11 unter Linux, MediaProjection unter Android, ReplayKit unter iOS. In den VisioForge SDKs ist der Bildschirm eine Videoquelle wie eine Webcam. ScreenSourceBlock verwendet die native API der Plattform, auf der er läuft, und Encoder, Datei und Stream sind überall derselbe Code.
Plattformübergreifenden Bildschirmrekorder selbst bauen oder das SDK nutzen
| Typischer Eigenbau | VisioForge Video Capture SDK .NET und Media Blocks SDK .NET | |
|---|---|---|
| Bildschirm aufnehmen | Auf jedem Betriebssystem eine andere native API, jeweils hinter eigenem Interop-Code: Desktop Duplication oder Windows Graphics Capture unter Windows, ScreenCaptureKit oder AVFoundation unter macOS, X11 oder PipeWire unter Linux, MediaProjection unter Android, ReplayKit unter iOS | ScreenSourceBlock mit einer Einstellungsklasse pro Plattform; ScreenSourceBlock() ohne Argumente nimmt die Standardquelle der Plattform |
| Ein Fenster oder ein Bereich | Fensterkennungen und Zuschneide-Code, die sich je Betriebssystem unterscheiden: HWND unter Windows, eine X11-Fenster-ID unter Linux | WindowHandle unter Windows oder XID unter Linux für ein Fenster, Rectangle für einen Bereich, MonitorIndex unter Windows oder Monitor unter macOS für den Monitor |
| Mauszeiger und Klicks | Zeiger und Klickmarkierungen selbst in jedes Bild einzeichnen | CaptureCursor unter Windows, macOS und Linux; MouseHighlight zeichnet bei jedem Klick einen wachsenden Kreis – unter Windows über einen globalen Maus-Hook, auf anderen Plattformen aus Klicks, die Ihr Code übergibt |
| Ton | Für das Mikrofon eine eigene Audio-API pro Betriebssystem, dazu WASAPI-Loopback für den Systemton unter Windows, von Ihrem Code mit dem Bild synchronisiert | SystemAudioSourceBlock für ein Mikrofon auf jeder Plattform, LoopbackAudioCaptureDeviceSourceSettings für den Systemton unter Windows, auf derselben Zeitachse wie das Bild |
| Kodierung und Datei | Media Foundation, VideoToolbox und MediaCodec einzeln einbinden oder mit jeder App einen FFmpeg-Build ausliefern | H264EncoderBlock wählt MediaCodec, VideoToolbox oder NVENC, AMF und Quick Sync mit OpenH264 als Rückfall; Ausgabe als MP4, WebM, MKV, MOV, AVI oder MPEG-TS |
| Zu pflegender Code | Fünf Plattform-Implementierungen, die geschrieben, getestet und synchron gehalten werden müssen | Eine C#-Pipeline; nur die Quelleinstellungen unterscheiden sich je Plattform |
Bildschirmaufnahme auf jeder Plattform
ScreenSourceBlock() ohne Argumente wählt die Standardquelle der Plattform. Mit einem Einstellungsobjekt wählen Sie API, Fenster oder Bereich.
| Plattform | Aufnahme-API | Einstellungsklasse | Ton | Hinweise |
|---|---|---|---|---|
| Windows | Windows Graphics Capture, DXGI Desktop Duplication, DirectX 9, GDI | ScreenCaptureD3D11SourceSettings, ScreenCaptureDX9SourceSettings, ScreenCaptureGDISourceSettings | Systemton (WASAPI-Loopback) oder ein Mikrofon | Monitor, Bereich oder ein Fenster; Klick-Hervorhebung |
| macOS | AVFoundation | ScreenCaptureMacOSSourceSettings | Mikrofon | Benötigt die Berechtigung zur Bildschirmaufnahme: ScreenSourceBlock.AskPermissions() |
| Mac Catalyst (.NET MAUI) | ScreenCaptureKit | ScreenCaptureMacOSSourceSettings | Mikrofon | Dieselbe Einstellungsklasse wie unter macOS |
| Linux | X11 | ScreenCaptureXDisplaySourceSettings | Mikrofon | Benötigt eine X11-Sitzung; XID oder XName wählt ein Fenster |
| Android | MediaProjection | AndroidScreenCaptureSourceSettings | Mikrofon | Der Nutzer bestätigt die Systemabfrage; die Aufnahme läuft in einem Foreground Service |
| iOS | ReplayKit | IOSScreenSourceSettings, IOSBroadcastSourceSettings | Mikrofon | Die eigene App oder über eine Broadcast Upload Extension das ganze Gerät |
Was das SDK für einen Bildschirmrekorder übernimmt
Bildschirm- und Desktopaufnahme ist in VideoCaptureCoreX (Video Capture SDK .NET) eine Videoquelle und in Media Blocks SDK .NET ein ScreenSourceBlock. Alles nach der Quelle funktioniert wie bei einer Kamera: Vorschau, Aufnahme, Streaming und Videoeffekte.
- Drei Aufnahmemodi: der ganze Bildschirm eines beliebigen Monitors, ein Anwendungsfenster über sein Handle oder ein Rechteck des Desktops
- Windows Graphics Capture ist ab Windows 10 Version 1803 standardmäßig gewählt; DXGI Desktop Duplication, DirectX 9 und GDI stehen ebenfalls zur Verfügung
- Ton vom PC über WASAPI-Loopback oder von einem Mikrofon; in Media Blocks SDK .NET mischt AudioMixerBlock beides in eine Spur
- Mauszeiger-Aufnahme und Klick-Hervorhebung mit einstellbarer Farbe, Größe und Dauer, für Tutorials und Demos. Unter Windows kommen die Klicks über einen globalen Maus-Hook: Ist MouseHighlight gesetzt, installiert VideoCaptureCoreX ihn beim Start; in Media Blocks rufen Sie MouseHighlightSubscribe() auf. Auf anderen Plattformen übergibt Ihr Code jeden Klick an MouseHighlightAddClickEvent (MouseHighlight_AddClickEvent in VideoCaptureCoreX)
- Hardware-H.264: MediaCodec unter Android, VideoToolbox auf Apple-Plattformen; unter Windows probiert das SDK NVENC, AMF und Quick Sync und fällt auf OpenH264 zurück
- Mehrere Ausgaben gleichzeitig: MP4 aufnehmen und denselben Bildschirm per RTMP, SRT oder NDI zu YouTube streamen; eine Aufnahme pausieren und fortsetzen oder eine neue Datei beginnen, ohne die Vorschau anzuhalten
- Eine API für Windows, macOS, Linux, Android und iOS, aus WinForms, WPF, .NET MAUI sowie nativen macOS-, Android- und iOS-Apps; zu jedem gibt es ein Beispiel
Anwendungsfälle
Tutorial- und E-Learning-Rekorder
Ein Fenster oder den ganzen Bildschirm mit Sprechertext und Klick-Hervorhebung aufnehmen und die Lektion als MP4 speichern.
Support und Sitzungsaufzeichnung
Aufzeichnen, was ein Nutzer vor dem Auftreten eines Problems getan hat, und das Video an das Support-Ticket anhängen.
QA und Testautomatisierung
Jeden automatisierten UI-Testlauf aufnehmen und die Videos fehlgeschlagener Läufe als Nachweis behalten.
Präsentationen und Livestreams
Den Bildschirm zu YouTube oder einem NDI-Empfänger streamen und aus derselben Aufnahme eine lokale MP4-Kopie behalten.
Codebeispiele
Gekürzt aus den Screen-Capture-Demos von Video Capture SDK .NET und Media Blocks SDK .NET. Die ersten beiden laufen in einem WinForms-Formular, das dritte in einer .NET-MAUI-Seite; jedes hat einen VisioForge VideoView namens videoView1 oder videoView.
Bildschirm und Systemton als MP4 aufnehmen
C#Ein Fenster mit Klick-Hervorhebung aufnehmen
C#Ein Rekorder für Windows, macOS, Android und iOS (.NET MAUI)
C#Die Pipeline
Das Fensterbeispiel und das .NET-MAUI-Beispiel verwenden dieselben vier Blöcke. ScreenSourceBlock nimmt den Bildschirm mit der API der Plattform auf, TeeBlock verteilt die Bilder auf Vorschau und Encoder, und MP4SinkBlock schreibt die Datei. Nur die Quelleinstellungen ändern sich von Plattform zu Plattform.
Häufige Fragen
Wie nehme ich den Ton auf, den der PC abspielt?▼
Kann ich ein Fenster aufnehmen, das von anderen Fenstern verdeckt ist?▼
Funktioniert es unter macOS und Linux?▼
Kann ich den Bildschirm unter Android und iOS aufnehmen?▼
Warum ist die Aufnahme schwarz?▼
Welches SDK brauche ich?▼
Dokumentation und Beispiele
Leitfaden zur Bildschirmaufnahme
Vollbild-, Bereichs- und Fensteraufnahme mit VideoCaptureCore und VideoCaptureCoreX, Multi-Monitor-Setups und Fehlerbehebung.
Tutorial: Bildschirmaufnahme als MP4
Schritt-für-Schritt-Tutorial in C# mit Video: Konsolenrekorder, Systemton und GPU-Encoder.
Screen Capture X Demo (WPF)
Beispiel für Video Capture SDK .NET: Bildschirm, Bereich oder Fenster, Mikrofon- oder Loopback-Ton, Ausgabe als MP4, WebM, AVI, MOV und MPEG-TS.
Screen Capture MB Demo (WPF)
Beispiel für Media Blocks SDK .NET: Bildschirm- oder Fensteraufnahme mit Klick-Hervorhebung, Vorschau und MP4-Aufnahme.
Bildschirmquelle in Media Blocks
Referenz zu ScreenSourceBlock: die Einstellungsklasse jeder Plattform und die Aufnahmetechnik dahinter.
ScreenCaptureMB (.NET MAUI)
Beispiel für Media Blocks SDK .NET für Windows, Mac Catalyst, Android und iOS: Bildschirmvorschau und MP4-Aufnahme, mit der MediaProjection-Abfrage unter Android.
Bildschirmaufnahme starten
Laden Sie die voll funktionsfähige 30-Tage-Testversion herunter und starten Sie die Screen-Capture-Demos. Je nach Engine und Ausgabe kann ein Wasserzeichen oder ein Hinweis auf die nicht registrierte Version erscheinen.
SDKs mit Bildschirmaufnahme
Video Capture SDK .NET
Aufnahme-Engine: Bildschirm, Fenster oder Bereich mit Systemton oder Mikrofon, in eine Datei aufgenommen oder gestreamt, mit Vorschau.
Mehr erfahren →Media Blocks SDK .NET
Pipeline-SDK: ScreenSourceBlock unter Windows, macOS, Linux, Android und iOS, kombiniert mit eigener Verarbeitung, Mischung und Ausgaben.
Mehr erfahren →Ab €250/Jahr · Lifetime-Lizenz ab €750
