Code Monkey home page Code Monkey logo

screenrecorder's Introduction

GAUSS

Table of Contents

Dev Requirements

  • Install Git
  • Install Python 11
    • Install modules in requirements.txt
  • Visual Studio 2022
    • Install Python development, .NET desktop development, and Desktop development with C++ workloads
    • Install MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (v14.38-17.8) component or newer to compile for ARM

Screen Recorder

Usage

The tool allows you to start and stop recording from the command line. When a recording is started, the framerate, monitor, and buffer size can be specified. When a recording is stopped, a folder must be provided in which to store the screenshots.

screenrecorder.exe -start ...        Starts screen recording.
    Usage:  screenrecorder.exe -start [-framerate <framerate>] [-monitor <monitor index>] [-framebuffer -mb <# of frames>] [-monitor <monitor # to record>]
    Ex>     screenrecorder.exe -start -framerate 10
    Ex>     screenrecorder.exe -start -framerate 1 -monitor 0 -framebuffer -mb 100

    -framerate      Specifies the rate at which screenshots will be taken, in frames per second.
    -monitor        Specifies the monitor to record, as an index. The highest index will record all monitors.
    -framebuffer    Specifies the size of the circular memory buffer in which to store screenshots, in number of screenshots. Adding the -mb flag specifies the size of the buffer in megabytes.

screenrecorder.exe -stop ...         Stops screen recording saves all screenshots in buffer to a folder.
    Usage:  screenrecorder.exe -stop <recording folder>
    Ex>     screenrecorder.exe -stop "D:\screenrecorder"

screenrecorder.exe -cancel ...       Cancels the screen recording.

screenrecorder.exe -help ...         Prints usage information.

Capturing ETW Events

An ETW event is emitted by the tool every time it receives a frame from DirectX. The event for each frame contains the filename to be used if the frame is saved to disk, allowing for direct correlation between each event and screenshot. The tool does not receive frames from DirectX unless there has been a change in the screen, so desired framerates may not be exact.

To capture the ETW events, you must use a ETW tracing tool like WPR and watch for events from the following provider guid: fe8fc3d0-1e6a-42f2-be28-9f8a0fcf7b04.

Example Capture

Create a WPR profile with the following provider and collectors defined:

...
<EventProvider Id="screenrecorder" Name="fe8fc3d0-1e6a-42f2-be28-9f8a0fcf7b04">
  </EventProvider>
...
<EventCollectorId Value="Standard_EventCollector_Misc">
  <EventProviders>
    <EventProviderId Value="screenrecorder"/>
  </EventProviders>
</EventCollectorId>
...

Take an ETW trace using WPR while you use the tool to capture some scenario.

wpr -start profile.wprp
ScreenRecorder.exe -start

... excercise some scenario of interest ...

ScreenRecorder.exe -stop "D:\"
wpr -stop trace.etl

Now opening the trace in WPA, we can see the events produced by the tool in the Generic Events table under the ScreenRecorder provider. Each event contains the filename for the screenshot.

screenrecorder's People

Contributors

benjaming64 avatar bgn64 avatar microsoft-github-operations[bot] avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

screenrecorder's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.