ffmpeg-screen-recorder
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Record Screen

Screen recording function using FFmpeg.
Defaults to using x11grab, 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

  1. Start Docker.
  2. Install development dependencies:
    npm install
  3. Run the tests:
    npm test

License

Released under the MIT license.

Author

Sebastian Tschan

Package Sidebar

Install

npm i ffmpeg-screen-recorder

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

14.6 kB

Total Files

5

Last publish

Collaborators

  • jeremysu0131