Single Still Frame

 • bencevans/screenshot-desktop

Cross-platform support:

  • Windows: ✔️
  • Mac: ✔️
  • Linux: ✔️ (Uses imagemagick)

 • Kuzat/screenshot-node

Cross-platform support:

  • Windows: ✔️
  • Mac: ✔️
  • Linux: ✔️

 • johnvmt/node-desktop-screenshot

Updated fork: senzil/node-desktop-screenshot

Cross-platform support:

  • Windows: ✔️ (Uses nircmd)
  • Mac: ✔️
  • Linux: ✔️ (Uses scrot)

Display Stream

 • noffle/screen-stream

Requires ffmpeg to be installed. Whilst license permits it to be bundled, it’s quite a big library.

Cross-platform support:

  • Windows: ❌
  • Mac: ❌
  • Linux: ✔️ (Requires FFmpeg)

From what I see and understand, node.js doesn’t have low-enough-level access to the computer’s display.
Instead, most projects turn to actually just be wrappers for native software builds (ie FFmpeg and imagemagick).

If I were to learn how to write my own desktop stream capture solution, a question on StackOverflow recommended to use Native Abstraction for Node.

Before I give up though…

Robot.js

There’s a package called RobotJS

VNC

Perhaps what I could also do is utilise an already-established protocol; like VNC.
This would also let keyboard and mouse emulation work out of the box.

VNC uses the Remote Framebuffer (RFB) protocol.

A node.js implementation of the protocol exists here: sidorares/node-rfb2.


I’ll try using Kuzat/screenshot-node, as it supposedly supports OS X, Linux and Windows.