This is a custom build of OBS, ffmpeg, and a light-weight executable wrapper. It is only 50mb (22mb compressed) and is capable of recording and encoding a specific region of the screen at an extremely high speed thanks to OBS.
The command line help is as follows:
obs-express v1.0.0, a command line screen recording utility
bundled with obs-studio v29.1.3
created for Clowd (https://github.com/clowd/Clowd)
Global:
--help Show this help text
Required:
--output {filePath} The file for the generated recording
One of:
--region {x,y,w,h} A capture region to spanning multiple monitors
--monitor {szDevice} Only capture the specified monitor
Optional:
--adapter {int} The index of the graphics device to use
--speaker {dev_id} Output device ID to record (can be multiple)
--microphone {dev_id} Input device ID to record (can be multiple)
--fps {int} The target video framerate (default: 30)
--crf {int} Quality from 0-51, lower is better. (default: 24)
--maxWidth {int} Downscale output to a maximum width
--maxHeight {int} Downscale output to a maximum height
--tracker If the mouse click tracker should be rendered
--trackerColor {r,g,b} The color of the tracker (default: 255,0,0)
--lowCpuMode Maximize performance if using CPU encoding
--hwAccel Use hardware encoding if available
--noCursor Do not render mouse cursor in recording
--pause Pause before recording until start command
--preview {hWnd} Render a recording preview to window handle
--omux {name:value} Add custom muxer/ffmpeg output options
The parameter --output
is required, and you must specify either --region
or --monitor
. You can retrieve szDevice
for a monitor using win32 GetMonitorInfo
.
Both the --speaker
and --microphone
parameters can be specified more than once, to record multiple devices.
They support default
being passed in as the value to use the default device, or the {ID}
of the device as returned from MMDeviceEnumerator
.
Maximum 5 simultaneous audio devices.
While the recorder is running, you can provide the following commands via stdin:
q
orCtrl+C
: Stop recording and quit.start
: Used in conjunction with the --pause parameter.mute
: Mutes an audio device. Must provide the device type and index (order in which it was provided in command line arguments). Examples:- Mute the first speaker device:
mute s 0
- Mute the second microphone device:
mute m 1
- Mute the first speaker device:
unmute
: Unmutes an audio device. Same syntax asmute
.pause
: Pauses the capture/rendering pipeline. Can be resumed withstart
.
Requirements:
- Visual Studio 17.2.6 or later
- Desktop development with C++ (Workload)
- Windows SDK 10.0.20348
The following will perform a full build and output obs-express.zip
to the project directory.
git clone --recursive https://github.com/clowd/obs-express.git
configure-obs.cmd
pack-release.cmd
Now open ObsExpressCpp.sln
in Visual Studio and you should be able to F5 and run/debug the program.