Simple and efficient screen recording utility for Windows.

wcap

Simple and efficient screen recording utility for Windows.

Get latest binary here: wcap.exe

  • press Ctrl + PrintScreen to start recording monitor (where mouse cursor currently is positioned)
  • press Ctrl + Win + PrintScreen to start recording currently active window
  • press any of previous combinations to stop recording
  • right click on tray icon to change settings

Info

wcap uses Windows.Graphics.Capture API available since Windows 10 version 1903, May 2019 Update (19H1) to capture contents of window or whole monitor. Captured texture is submitted to Media Foundation to encode video to mp4 file with hardware accelerated H264 codec. Using capture from compositor and hardware accelerated encoder allows it to consume very little CPU and memory.

You can choose in settings to capture only client area or full size of window - client area will not include title bar and borders for standard windows style. Recorded video size is determined by initial window size.

Video is encoded with H264 codec using Media Foundation API. By default hardware encoder is preferred, but you can disable it in settings - then video will be encoded using Microsoft Media Foundation H264 software encoder. It will be automatically used in case GPU/driver does not provide hardware accelerated encoder. You might want to explicitly use software encoder on older GPU's as their hardware encoder quality is not so great.

Audio is captured using WASAPI loopback recording and encoded using Microsoft Media Foundation AAC encoder.

Recorded mp4 file can be set to use fragmented mp4 format in settings. Fragmented mp4 file does not require "finalizing" it. Which means that in case application, or GPU drvier crashes or you run out of disk space, the partial mp4 file will be valid for playback. The disadvantage of fragmented mp4 file is that it is a bit larger than normal mp4 format, and seeking is slower.

You can use settings dialog to restrict max resolution of video - captured image from monitor or window will be scaled down to keep aspect ratio if you set any of max width/height settings to non-zero value. Similarly framerate of capture can be reduced to limit maximum amount of frames per second. Setting it to zero will use compositor framerate which is typically monitor refresh rate. Lower video framerate will give higher quality video for same bitrate and reduced GPU usage. If you notice too many dropped frames during recording, try reducing video resolution and framerate.

Capture of mouse cursor in video can be disabled when using Windows 10 version 2004, May 2020 Update (20H1) or newer.

Building

To build the binary from source code, have Visual Studio 2019 installed, and simply run build.cmd.

Future plans

  • Capture video from fixed position rectangle on screen
  • Allow to set max file size or duration of recording
  • Maybe automatically handle default audio device changes when recording audio?
  • Maybe allow to choose HEVC codec? Could be useful for recording in HDR 10-bit format

License

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

Owner
Mārtiņš Možeiko
Mārtiņš Možeiko
Comments
  • Latest version records a green screen

    Latest version records a green screen

    Latest version records an empty green video, and a second after I press the shortcut to stop recording, the program exits. I don't know if this was introduced in this particular version, cause I've missed a couple of updates.

    This is on a Thinkpad with Windows 11, Intel GPU HD4600, Core i5 4300M

    I tried both the provided binary, and also built it myself.

  • Incorrect detection of Windows version

    Incorrect detection of Windows version

    I was trying to run this, and got this error: image

    My Windows version: image

    I am definitely meeting the requirement stated. I altered Capture_IsSupported to simply return TRUE and that prevents the error but the program still doesn't appear to run; I've just hidden the error.

    I don't know enough about C++ to be able to print out dwMajorVersion and dwBuildNumber to the command line. Apparently, adding #include <stdio.h> at the top of the file isn't enough to make printf work.

  • Audio via Microphone capture

    Audio via Microphone capture

    Hi,

    Is audio capture via microphone a planned feature? wcap does not appear to record from my attached microphone, but it does capture system audio.

    Thanks

  • Fixed build script when trying to compile after invoking VsDevCmd.bat…

    Fixed build script when trying to compile after invoking VsDevCmd.bat…

    … instead of vcvarsall.bat.

    Calling “VsDevCmd.bat -arch=x64 -host_arch=x64” does not set the environment variable %Platform% unlike “vcvarsall.bat x64”. %VSCMD_ARG_TGT_ARCH% is defined when invoking both batch files.

  • Capturing active window results in empty files

    Capturing active window results in empty files

    Hi there, first let me thank you for this amazing tool :)

    While the modes capturing the monitor and rectangle work, I've noticed the "active window" mode creates 0-byte files on my system.

    If there's anything I can do to help debug this issue, let me know!

    Microsoft Windows [Version 10.0.19043.1415]
    

    Cheers

  • WCap does not record what my monitor renders.

    WCap does not record what my monitor renders.

    In particular, when recording both window & monitor via Neverwinter Nights Enhanced Edition, I cannot see my cursor while recording. While the recorded video shows it, it does not actually capture what is on my screen.

    Link to issue here.

Related tags
Single header C library for rendering truetype text to the screen
Single header C library for rendering truetype text to the screen

kc_truetypeassembler.h Single header C library for assembling textured quads for text rendering using a graphics API. It generates a vertices and text

Jun 15, 2022
Tiny and efficient graph abstractions.
Tiny and efficient graph abstractions.

Tiny and efficient graph abstractions. Usage See tinygraph-example.c Interface See documentation in tinygraph.h Building The tinygraph library require

May 4, 2022
SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL)

SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL), capable of handling subpixel features seamlessly, and featuring an improved and advanced pattern detection & handling mechanism.

May 31, 2022
Canny edge detection, one of the efficient edge detection algorithms is implemented on a Zedboard FPGA using verilog
Canny edge detection, one of the efficient edge detection algorithms is implemented on a Zedboard FPGA using verilog

In this project, Canny edge detection, one of the efficient edge detection algorithms is implemented on a Zedboard FPGA using verilog. The input image is stored on a PC and fed to the FPGA. The output processed image is displayed on a VGA monitor.

May 9, 2022
Utility on top of the Flutter Driver API that facilitates measuring the performance of your app in an automated way created by Very Good Ventures 🦄
Utility on top of the Flutter Driver API that facilitates measuring the performance of your app in an automated way created by Very Good Ventures 🦄

Very Good Performance Developed with ?? by Very Good Ventures ?? Utility on top of the Flutter Driver API that facilitates measuring the performance o

Jun 1, 2022
Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X
Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X

Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X (probably BSD also). Web Link Website

May 30, 2022
Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD.

Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD. It lets you create traditional hand-drawn animation (cartoon) using both bitmap and vector graphics. Pencil2D is free and open source.

Jun 15, 2022
This repo will sort of document my story of learning vulkan with VulkanSDK and cl (msvc) on windows.
This repo will sort of document my story of learning vulkan with VulkanSDK and cl (msvc) on windows.

Learning Vulkan This repo is a means of documenting my journey with learning Vulkan's basics on windows. Because of the binaries in the LunarG VulkanS

Dec 8, 2021
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.

dart_vlc Bringing power of VLC to Flutter & Dart apps on Windows & Linux Installation dependencies: ... dart_vlc: ^0.0.1 Documentation Create a ne

Jun 19, 2022
Paint program for Unix. Inspired by MS Paint (Windows 95-98).
Paint program for Unix. Inspired by MS Paint (Windows 95-98).

Classic Colors Classic Colors is a simple and efficient paint program for Unix systems, inspired by MS Paint (Windows 95-98 version). It is built on t

Jun 1, 2022
Decompilation of 3D Pinball for Windows – Space Cadet

Decompilation of 3D Pinball for Windows – Space Cadet

Jun 17, 2022
Android port of 3D Pinball for Windows – Space Cadet

SpaceCadetPinball Android port of 3D Pinball for Windows – Space Cadet Based on: https://github.com/k4zmu2a/SpaceCadetPinball TODO Add proper controls

May 9, 2022
This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.
This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.

DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows

Jun 17, 2022
A very simple and light-weight drawing app made with qt and C++.
A very simple and light-weight drawing app made with qt and C++.

Blackboard A very simple and light-weight drawing app made with qt and C++. It supports tablet and pen pressure with the help of QTabletEvents. So you

Nov 15, 2021
A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.
A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

commandline A C++ commandline for use in servers and terminal chat software. Provides very simple asynchronous input/output. Supports reading and writ

Jun 14, 2022
A simple single point light shadow mapping with OpenGL 3.3 and C++

omni-directional-light-example Using OpenGL 3.3 with C++ Basically a single light map, no lighting model was used Usage Build the executable outside A

Feb 10, 2022
A simple mirror simulator made with OpenGL 3.3 and C++

Mirror-Example A simple mirror example using OpenGL 3.3 with C++. Theory It basically constructs a camera at the mirror location, by determining its v

Feb 10, 2022
Simple console tool to get all the information from DXGI and Direct3D 12 on current system
Simple console tool to get all the information from DXGI and Direct3D 12 on current system

D3d12info Simple console tool to get all the information from DXGI and Direct3D 12 (D3D12) on current system. Built and tested on Windows 10 64-bit us

Jun 6, 2022
This module is a simple, lightweight and flexible way to generate QR codes in Godot
This module is a simple, lightweight and flexible way to generate QR codes in Godot

QRCodeTexture Godot Module Summary This module is a simple, lightweight and flexible way to generate QR codes in Godot. It provides a new type of text

Jun 19, 2022