在Node.js中捕获服务器屏幕的最快方法

时间:2015-02-15 17:10:12

标签: javascript node.js vnc

我正在构建像Amblilight这样的东西,我需要尽快捕获屏幕(1920x1080)并处理它以获得LED的颜色。

我使用Node.js作为编程语言。我试图使用VNC协议捕获屏幕(使用我自己的客户端实现),但它给了我像1 FPS,并有3秒的延迟。我需要以最快的方式捕获运行node.js的计算机屏幕。

我正在使用基于Ubuntu的Linux发行版。

1 个答案:

答案 0 :(得分:0)

这很难回答,因为屏幕捕获取决于系统。如果我要在MacOSX上为我当前的系统编写这种类型的东西,我会利用命令行进行屏幕截图。

//from Terminal
>screencapture ~/Desktop/test.png

然后将其合并到Node.JS中:

//screenshot.js

var file = '~/Desktop/test.png';
var worker = require('child_process');
var fs = require('fs');

worker.exec('screencapture ' + file, function(err, results) {
  if(err) return console.error(err);

  //process image
  var imageBuffer = fs.readFileSync(file);

  while(imageBuffer.read()) {
   //process lines in buffer
  }
});