Node.js screen recording function for remote servers using ffmpeg.
MIT License
Screen recording function using FFmpeg. Defaults to using
x11grab
, but also supports other input formats.
This is a thin wrapper around FFmpeg and has no other dependencies.
npm install record-screen
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)
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)
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
}
npm install
npm test
Released under the MIT license.