Something Awesome: Research - Display Capture
Contents
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:
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.