Grabación de pantalla multiplataforma en C# y .NET
Cree un grabador de pantalla en C# con una sola API para Windows, macOS, Linux, Android e iOS: la pantalla completa, una ventana o una región, con sonido, el cursor y el resaltado de clics, a MP4 o a una transmisión en vivo. Video Capture SDK .NET y Media Blocks SDK .NET usan la API de captura nativa de cada plataforma.
Desde €250/año · licencia Lifetime desde €750
Un bucle de capturas de pantalla no es un grabador de pantalla
Graphics.CopyFromScreen le da un único mapa de bits en Windows. Un grabador necesita además una velocidad de fotogramas estable, el cursor, sonido, un codificador y un archivo cuyo audio se mantenga sincronizado con el vídeo, y en cada uno de los demás sistemas operativos la API de captura vuelve a ser distinta: AVFoundation o ScreenCaptureKit en macOS, X11 en Linux, MediaProjection en Android, ReplayKit en iOS. En los SDK de VisioForge la pantalla es una fuente de vídeo como una cámara web. ScreenSourceBlock usa la API nativa de la plataforma en la que se ejecuta, y el codificador, el archivo y la transmisión son el mismo código en todas partes.
Construir un grabador de pantalla multiplataforma por su cuenta o usar el SDK
| Solución propia típica | VisioForge Video Capture SDK .NET y Media Blocks SDK .NET | |
|---|---|---|
| Capturar la pantalla | Una API nativa distinta en cada sistema operativo, cada una detrás de su propio código de interoperabilidad: Desktop Duplication o Windows Graphics Capture en Windows, ScreenCaptureKit o AVFoundation en macOS, X11 o PipeWire en Linux, MediaProjection en Android, ReplayKit en iOS | ScreenSourceBlock con una clase de configuración por plataforma; ScreenSourceBlock() sin argumentos toma la fuente predeterminada de la plataforma |
| Una ventana o una región | Identificadores de ventana y código de recorte que cambian según el sistema operativo: HWND en Windows, un ID de ventana X11 en Linux | WindowHandle en Windows o XID en Linux para una ventana, Rectangle para una región, MonitorIndex en Windows o Monitor en macOS para el monitor |
| Cursor y clics | Componer usted mismo el cursor y las marcas de clic en cada fotograma | CaptureCursor en Windows, macOS y Linux; MouseHighlight dibuja un círculo que se expande en cada clic, tomado de un hook global del ratón en Windows y pasado por su código en las demás plataformas |
| Sonido | Una API de audio distinta por sistema operativo para el micrófono, más WASAPI loopback para el sonido del sistema en Windows, sincronizado con el vídeo por su código | SystemAudioSourceBlock para un micrófono en todas las plataformas, LoopbackAudioCaptureDeviceSourceSettings para el sonido del sistema en Windows, en la misma línea de tiempo que el vídeo |
| Codificación y archivo | Envolver Media Foundation, VideoToolbox y MediaCodec uno a uno, o distribuir una compilación de FFmpeg con cada aplicación | H264EncoderBlock elige MediaCodec, VideoToolbox, o NVENC, AMF y Quick Sync con OpenH264 como alternativa; salida a MP4, WebM, MKV, MOV, AVI o MPEG-TS |
| Código que mantener | Cinco implementaciones por plataforma que escribir, probar y mantener alineadas | Una sola canalización en C#; solo la configuración de la fuente cambia según la plataforma |
Captura de pantalla en cada plataforma
ScreenSourceBlock() sin argumentos elige la fuente predeterminada de la plataforma. Pase un objeto de configuración para elegir la API, la ventana o la región.
| Plataforma | API de captura | Clase de configuración | Sonido | Notas |
|---|---|---|---|---|
| Windows | Windows Graphics Capture, DXGI Desktop Duplication, DirectX 9, GDI | ScreenCaptureD3D11SourceSettings, ScreenCaptureDX9SourceSettings, ScreenCaptureGDISourceSettings | Sonido del sistema (WASAPI loopback) o un micrófono | Monitor, región o una ventana; resaltado de clics |
| macOS | AVFoundation | ScreenCaptureMacOSSourceSettings | Micrófono | Requiere el permiso de grabación de pantalla: ScreenSourceBlock.AskPermissions() |
| Mac Catalyst (.NET MAUI) | ScreenCaptureKit | ScreenCaptureMacOSSourceSettings | Micrófono | La misma clase de configuración que en macOS |
| Linux | X11 | ScreenCaptureXDisplaySourceSettings | Micrófono | Requiere una sesión X11; XID o XName selecciona una ventana |
| Android | MediaProjection | AndroidScreenCaptureSourceSettings | Micrófono | El usuario acepta el aviso del sistema; la grabación se ejecuta en un servicio en primer plano |
| iOS | ReplayKit | IOSScreenSourceSettings, IOSBroadcastSourceSettings | Micrófono | Su propia aplicación, o todo el dispositivo mediante una Broadcast Upload Extension |
Lo que el SDK hace por un grabador de pantalla
La grabación de pantalla y de escritorio es una fuente de vídeo en VideoCaptureCoreX (Video Capture SDK .NET) y un ScreenSourceBlock en Media Blocks SDK .NET. Todo lo que viene después de la fuente funciona igual que con una cámara: vista previa, grabación, transmisión y efectos de vídeo.
- Tres modos de captura: la pantalla completa de cualquier monitor, una ventana de aplicación por su identificador o un rectángulo del escritorio
- Windows Graphics Capture se selecciona de forma predeterminada en Windows 10 versión 1803 y posteriores; DXGI Desktop Duplication, DirectX 9 y GDI también están disponibles
- Sonido del equipo mediante WASAPI loopback o de un micrófono; en Media Blocks SDK .NET, AudioMixerBlock mezcla ambos en una sola pista
- Captura del cursor y resaltado de clics con color, radio y duración configurables, para tutoriales y demostraciones. En Windows los clics llegan de un hook global del ratón: cuando MouseHighlight está definido, VideoCaptureCoreX lo instala al iniciar; en Media Blocks se llama a MouseHighlightSubscribe(). En otras plataformas su código pasa cada clic a MouseHighlightAddClickEvent (MouseHighlight_AddClickEvent en VideoCaptureCoreX)
- H.264 por hardware: MediaCodec en Android, VideoToolbox en las plataformas de Apple; en Windows el SDK prueba NVENC, AMF y Quick Sync y recurre a OpenH264
- Varias salidas a la vez: grabar MP4 mientras se transmite la misma pantalla a YouTube por RTMP, SRT o NDI; pausar y reanudar una grabación o empezar un archivo nuevo sin detener la vista previa
- Una sola API en Windows, macOS, Linux, Android e iOS, desde WinForms, WPF, .NET MAUI y aplicaciones nativas de macOS, Android e iOS; con un ejemplo para cada una
Casos de uso
Grabadores de tutoriales y e-learning
Grabe una ventana o toda la pantalla con narración y resaltado de clics, y guarde la lección en MP4.
Soporte y grabación de sesiones
Grabe lo que hizo un usuario antes de que apareciera un problema y adjunte el vídeo al ticket de soporte.
QA y automatización de pruebas
Grabe cada ejecución de pruebas de interfaz automatizadas y conserve el vídeo de las fallidas como evidencia.
Presentaciones y transmisiones en vivo
Transmita la pantalla a YouTube o a un receptor NDI y conserve una copia MP4 local de la misma captura.
Ejemplos de código
Resumidos a partir de las demos Screen Capture de Video Capture SDK .NET y Media Blocks SDK .NET. Los dos primeros se ejecutan en un formulario WinForms y el tercero en una página .NET MAUI; cada uno tiene un VideoView de VisioForge llamado videoView1 o videoView.
Grabar la pantalla y el sonido del sistema a MP4
C#Grabar una ventana con resaltado de clics
C#Un grabador para Windows, macOS, Android e iOS (.NET MAUI)
C#La canalización
El ejemplo de la ventana y el de .NET MAUI usan los mismos cuatro bloques. ScreenSourceBlock captura la pantalla con la API de la plataforma, TeeBlock reparte los fotogramas entre la vista previa y el codificador, y MP4SinkBlock escribe el archivo. Solo la configuración de la fuente cambia de una plataforma a otra.
Preguntas frecuentes
¿Cómo grabo el sonido que reproduce el equipo?▼
¿Puedo grabar una ventana tapada por otras ventanas?▼
¿Funciona en macOS y Linux?▼
¿Puedo grabar la pantalla en Android e iOS?▼
¿Por qué la grabación sale en negro?▼
¿Qué SDK necesito?▼
Documentación y ejemplos
Guía de captura de pantalla
Captura de pantalla completa, región y ventana con VideoCaptureCore y VideoCaptureCoreX, configuraciones multimonitor y solución de problemas.
Tutorial de captura de pantalla a MP4
Tutorial paso a paso en C# con vídeo: grabador de consola, audio del sistema y codificadores por GPU.
Screen Capture X Demo (WPF)
Ejemplo de Video Capture SDK .NET: pantalla, región o ventana, audio de micrófono o loopback, salida a MP4, WebM, AVI, MOV y MPEG-TS.
Screen Capture MB Demo (WPF)
Ejemplo de Media Blocks SDK .NET: captura de pantalla o de ventana con resaltado de clics, vista previa y grabación a MP4.
Fuente de pantalla en Media Blocks
Referencia de ScreenSourceBlock: la clase de configuración de cada plataforma y la tecnología de captura que hay detrás.
ScreenCaptureMB (.NET MAUI)
Ejemplo de Media Blocks SDK .NET para Windows, Mac Catalyst, Android e iOS: vista previa de la pantalla y grabación a MP4, con el aviso de MediaProjection en Android.
Empiece a grabar la pantalla
Descargue la versión de prueba de 30 días con todas las funciones y ejecute las demos Screen Capture. Según el motor y la salida, puede aparecer una marca de agua o un aviso de versión no registrada.
SDK con grabación de pantalla
Video Capture SDK .NET
Motor de captura: pantalla, ventana o región con sonido del sistema o micrófono, grabada en un archivo o transmitida, con vista previa.
Más información →Media Blocks SDK .NET
SDK de canalizaciones: ScreenSourceBlock en Windows, macOS, Linux, Android e iOS, combinado con su propio procesamiento, mezcla y salidas.
Más información →Desde €250/año · licencia Lifetime desde €750
