record-screen
v3.19.0
Published
Screen recording function using ffmpeg.
Downloads
2,477
Maintainers
Readme
Record Screen
Screen recording function using FFmpeg.
Defaults to usingx11grab
, but also supports other input formats.
Contents
Requirements
This is a thin wrapper around FFmpeg and has no other dependencies.
Installation
npm install record-screen
Usage
x11grab
Desktop screen recording using
the x11grab
input device:
const recordScreen = require('record-screen')
const recording = recordScreen('/tmp/test.mp4', {
resolution: '1440x900' // Display resolution
})
recording.promise
.then(result => {
// Screen recording is done
process.stdout.write(result.stdout)
process.stderr.write(result.stderr)
})
.catch(error => {
// Screen recording has failed
console.error(error)
})
// As an example, stop the screen recording after 5 seconds:
setTimeout(() => recording.stop(), 5000)
mjpeg
Record an MJPEG stream:
const recordScreen = require('record-screen')
const recording = recordScreen('/tmp/test.mp4', {
inputFormat: 'mjpeg' // Record an MJPEG stream, defaults to port 9000
})
recording.promise
.then(result => {
// Screen recording is done
process.stdout.write(result.stdout)
process.stderr.write(result.stderr)
})
.catch(error => {
// Screen recording has failed
console.error(error)
})
// As an example, stop the screen recording after 5 seconds:
setTimeout(() => recording.stop(), 5000)
Options
const defaultOptions = {
// shared options:
loglevel: undefined, // Log level, defaults to "info"
inputFormat: 'x11grab', // Input format, use 'mjpeg' to record an MJPEG stream
resolution: undefined, // Display resolution (WIDTHxHEIGHT)
fps: 15, // Frames per second to record from input
videoFilter: undefined, // Video filters to apply, e.g. 'crop=480:300:960:600'
videoCodec: undefined, // Video codec, defaults to libx264 for mp4 output
pixelFormat: 'yuv420p', // Output pixel format
rotate: undefined, // Rotate metadata, set to 90 to rotate left by 90°
hostname: 'localhost', // Server hostname
// x11grab options:
display: '0', // X11 server display
// options ignored for x11grab:
protocol: 'http', // Server protocol
username: undefined, // Basic auth username
password: undefined, // Basic auth password
port: 9000, // Server port
pathname: undefined, // URL path component
search: undefined // URL query parameter
}
Testing
- Start Docker.
- Install development dependencies:
npm install
- Run the tests:
npm test
License
Released under the MIT license.