Wieloplatformowe nagrywanie ekranu w C# i .NET
Zbuduj rejestrator ekranu w C# z jednym API dla Windows, macOS, Linux, Android i iOS: cały ekran, okno lub obszar, z dźwiękiem, kursorem i podświetleniem kliknięć, do pliku MP4 lub transmisji na żywo. Video Capture SDK .NET i Media Blocks SDK .NET korzystają z natywnego API przechwytywania każdej platformy.
Od €250/rok · licencja Lifetime od €750
Pętla zrzutów ekranu to nie rejestrator ekranu
Graphics.CopyFromScreen daje jedną bitmapę w systemie Windows. Rejestrator potrzebuje jeszcze stałej liczby klatek, kursora, dźwięku, kodera i pliku, w którym dźwięk pozostaje zsynchronizowany z obrazem, a w każdym innym systemie operacyjnym API przechwytywania jest znowu inne: AVFoundation lub ScreenCaptureKit w macOS, X11 w Linuksie, MediaProjection w Androidzie, ReplayKit w iOS. W SDK VisioForge ekran jest źródłem wideo jak kamera internetowa. ScreenSourceBlock używa natywnego API platformy, na której działa, a koder, plik i transmisja to wszędzie ten sam kod.
Własny wieloplatformowy rejestrator ekranu czy SDK
| Typowe rozwiązanie własne | VisioForge Video Capture SDK .NET i Media Blocks SDK .NET | |
|---|---|---|
| Przechwytywanie ekranu | Inne natywne API w każdym systemie, każde za własnym kodem interop: Desktop Duplication lub Windows Graphics Capture w Windows, ScreenCaptureKit lub AVFoundation w macOS, X11 lub PipeWire w Linuksie, MediaProjection w Androidzie, ReplayKit w iOS | ScreenSourceBlock z jedną klasą ustawień na platformę; ScreenSourceBlock() bez argumentów bierze domyślne źródło platformy |
| Jedno okno lub obszar | Identyfikatory okien i kod przycinania różne w każdym systemie: HWND w Windows, identyfikator okna X11 w Linuksie | WindowHandle w Windows lub XID w Linuksie dla okna, Rectangle dla obszaru, MonitorIndex w Windows lub Monitor w macOS dla monitora |
| Kursor i kliknięcia | Samodzielne nakładanie kursora i znaczników kliknięć na każdą klatkę | CaptureCursor w Windows, macOS i Linuksie; MouseHighlight rysuje rozszerzający się okrąg przy każdym kliknięciu, pobranym z globalnego hooka myszy w Windows i przekazanym przez Twój kod na innych platformach |
| Dźwięk | Osobne API audio w każdym systemie dla mikrofonu, plus loopback WASAPI dla dźwięku systemowego w Windows, synchronizowane z obrazem przez Twój kod | SystemAudioSourceBlock dla mikrofonu na każdej platformie, LoopbackAudioCaptureDeviceSourceSettings dla dźwięku systemowego w Windows, na tej samej osi czasu co obraz |
| Kodowanie i plik | Media Foundation, VideoToolbox i MediaCodec opakowane jeden po drugim albo kompilacja FFmpeg dołączana do każdej aplikacji | H264EncoderBlock wybiera MediaCodec, VideoToolbox albo NVENC, AMF i Quick Sync z OpenH264 jako rezerwą; wyjście MP4, WebM, MKV, MOV, AVI lub MPEG-TS |
| Kod do utrzymania | Pięć implementacji platformowych do napisania, przetestowania i utrzymania w zgodności | Jeden potok w C#; zmieniają się tylko ustawienia źródła na danej platformie |
Przechwytywanie ekranu na każdej platformie
ScreenSourceBlock() bez argumentów wybiera domyślne źródło platformy. Przekaż obiekt ustawień, aby wybrać API, okno lub obszar.
| Platforma | API przechwytywania | Klasa ustawień | Dźwięk | Uwagi |
|---|---|---|---|---|
| Windows | Windows Graphics Capture, DXGI Desktop Duplication, DirectX 9, GDI | ScreenCaptureD3D11SourceSettings, ScreenCaptureDX9SourceSettings, ScreenCaptureGDISourceSettings | Dźwięk systemowy (loopback WASAPI) lub mikrofon | Monitor, obszar lub jedno okno; podświetlenie kliknięć |
| macOS | AVFoundation | ScreenCaptureMacOSSourceSettings | Mikrofon | Wymaga uprawnienia do nagrywania ekranu: ScreenSourceBlock.AskPermissions() |
| Mac Catalyst (.NET MAUI) | ScreenCaptureKit | ScreenCaptureMacOSSourceSettings | Mikrofon | Ta sama klasa ustawień co w macOS |
| Linux | X11 | ScreenCaptureXDisplaySourceSettings | Mikrofon | Wymaga sesji X11; XID lub XName wybiera okno |
| Android | MediaProjection | AndroidScreenCaptureSourceSettings | Mikrofon | Użytkownik akceptuje monit systemowy; nagrywanie działa w usłudze pierwszoplanowej |
| iOS | ReplayKit | IOSScreenSourceSettings, IOSBroadcastSourceSettings | Mikrofon | Własna aplikacja albo całe urządzenie przez Broadcast Upload Extension |
Co SDK robi dla rejestratora ekranu
Nagrywanie ekranu i pulpitu to źródło wideo w VideoCaptureCoreX (Video Capture SDK .NET) i ScreenSourceBlock w Media Blocks SDK .NET. Wszystko za źródłem działa tak samo jak dla kamery: podgląd, nagrywanie, transmisja i efekty wideo.
- Trzy tryby przechwytywania: cały ekran dowolnego monitora, jedno okno aplikacji według uchwytu lub prostokąt pulpitu
- Windows Graphics Capture jest wybierany domyślnie w Windows 10 w wersji 1803 i nowszych; dostępne są też źródła DXGI Desktop Duplication, DirectX 9 i GDI
- Dźwięk z komputera przez loopback WASAPI lub z mikrofonu; w Media Blocks SDK .NET AudioMixerBlock miksuje oba w jedną ścieżkę
- Przechwytywanie kursora i podświetlanie kliknięć z konfigurowalnym kolorem, promieniem i czasem trwania, do samouczków i prezentacji. W Windows kliknięcia pochodzą z globalnego hooka myszy: gdy ustawiono MouseHighlight, VideoCaptureCoreX instaluje go przy starcie; w Media Blocks wywołujesz MouseHighlightSubscribe(). Na innych platformach Twój kod przekazuje każde kliknięcie do MouseHighlightAddClickEvent (MouseHighlight_AddClickEvent w VideoCaptureCoreX)
- Sprzętowe H.264: MediaCodec w Androidzie, VideoToolbox na platformach Apple; w Windows SDK próbuje NVENC, AMF i Quick Sync, a w razie braku używa OpenH264
- Kilka wyjść naraz: nagrywaj MP4, transmitując ten sam ekran do YouTube przez RTMP, SRT lub NDI; wstrzymuj i wznawiaj nagrywanie albo zaczynaj nowy plik bez zatrzymywania podglądu
- Jedno API w Windows, macOS, Linuksie, Androidzie i iOS, z WinForms, WPF, .NET MAUI oraz natywnych aplikacji macOS, Android i iOS; przykład dla każdej
Zastosowania
Rejestratory samouczków i e-learningu
Nagraj okno lub cały ekran z komentarzem i podświetleniem kliknięć, a lekcję zapisz do MP4.
Wsparcie i nagrywanie sesji
Nagraj, co użytkownik robił przed pojawieniem się problemu, i dołącz wideo do zgłoszenia.
QA i automatyzacja testów
Nagrywaj każde uruchomienie automatycznych testów interfejsu i zachowuj wideo z nieudanych jako dowód.
Prezentacje i transmisje na żywo
Transmituj ekran do YouTube lub odbiornika NDI i zachowaj lokalną kopię MP4 z tego samego przechwytywania.
Przykłady kodu
Skrócone z demonstracji Screen Capture z Video Capture SDK .NET i Media Blocks SDK .NET. Dwa pierwsze działają w formularzu WinForms, trzeci na stronie .NET MAUI; każdy ma VideoView VisioForge o nazwie videoView1 lub videoView.
Nagrywanie ekranu i dźwięku systemowego do MP4
C#Nagrywanie jednego okna z podświetleniem kliknięć
C#Jeden rejestrator dla Windows, macOS, Android i iOS (.NET MAUI)
C#Potok
Przykład z oknem i przykład .NET MAUI używają tych samych czterech bloków. ScreenSourceBlock przechwytuje ekran przez API platformy, TeeBlock dzieli klatki między podgląd a koder, a MP4SinkBlock zapisuje plik. Między platformami zmieniają się tylko ustawienia źródła.
Najczęściej zadawane pytania
Jak nagrać dźwięk odtwarzany przez komputer?▼
Czy mogę nagrać okno zasłonięte innymi oknami?▼
Czy to działa w macOS i Linuksie?▼
Czy mogę nagrywać ekran w Androidzie i iOS?▼
Dlaczego nagranie jest czarne?▼
Którego SDK potrzebuję?▼
Dokumentacja i przykłady
Przewodnik po przechwytywaniu ekranu
Przechwytywanie całego ekranu, obszaru i okna z VideoCaptureCore i VideoCaptureCoreX, konfiguracje wielomonitorowe i rozwiązywanie problemów.
Samouczek przechwytywania ekranu do MP4
Samouczek C# krok po kroku z wideo: rejestrator konsolowy, dźwięk systemowy i kodery GPU.
Screen Capture X Demo (WPF)
Przykład Video Capture SDK .NET: ekran, obszar lub okno, dźwięk z mikrofonu lub loopback, wyjście MP4, WebM, AVI, MOV i MPEG-TS.
Screen Capture MB Demo (WPF)
Przykład Media Blocks SDK .NET: przechwytywanie ekranu lub okna z podświetleniem kliknięć, podglądem i nagrywaniem MP4.
Źródło ekranu w Media Blocks
Dokumentacja ScreenSourceBlock: klasa ustawień każdej platformy i technologia przechwytywania, która za nią stoi.
ScreenCaptureMB (.NET MAUI)
Przykład Media Blocks SDK .NET dla Windows, Mac Catalyst, Android i iOS: podgląd ekranu i nagrywanie MP4, z monitem MediaProjection w Androidzie.
Zacznij nagrywać ekran
Pobierz w pełni funkcjonalną 30-dniową wersję próbną i uruchom demonstracje Screen Capture. Zależnie od silnika i wyjścia może pojawić się znak wodny lub informacja o niezarejestrowanej wersji.
SDK z nagrywaniem ekranu
Video Capture SDK .NET
Silnik przechwytywania: ekran, okno lub obszar z dźwiękiem systemowym lub mikrofonem, nagrywane do pliku lub transmitowane, z podglądem.
Dowiedz się więcej →Media Blocks SDK .NET
SDK potoków: ScreenSourceBlock w Windows, macOS, Linuksie, Androidzie i iOS, połączony z własnym przetwarzaniem, miksowaniem i wyjściami.
Dowiedz się więcej →Od €250/rok · licencja Lifetime od €750
