record-screen
v3.19.0
Published
Screen recording function using ffmpeg.
Downloads
874
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-screenUsage
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.
