chuckfairy / node-webcam

Nodejs Cross Platform Webcam usage
MIT License
193 stars 51 forks source link

fails in Windows, attempting to shell /bin/sh ? #14

Closed ericblade closed 7 years ago

ericblade commented 7 years ago

Windows usage of the library fails completely, based on it appearing to attempt to shell /bin/sh

Error: spawn /bin/sh ENOENT
    at exports._errnoException (util.js:1026:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19)
    at onErrorNT (internal/child_process.js:366:16)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)
    at process._tickCallback (internal/process/next_tick.js:161:9)
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn /bin/sh',
  path: '/bin/sh',
  spawnargs:
   [ '/d',
     '/s',
     '/c',
     '"D:\\src\\camtest\\node_modules\\node-webcam\\src\\bindings\\CommandCam\\Commandcam.exe  /devnum 1 /filename test_picture.bmp"' ],
  cmd: 'D:\\src\\camtest\\node_modules\\node-webcam\\src\\bindings\\CommandCam\\Commandcam.exe  /devnum 1 /filename test_picture.bmp' }

code is as follows

const WebCam = require('node-webcam');

const getCameraList = () => {
    return new Promise((resolve, reject) => {
        WebCam.create().list(cameraArr => {
            console.warn('**** cameraList=', cameraArr);
            resolve(cameraArr);
        });
    });
};

const loadCameras = async () => {
    const cameraArr = await getCameraList();
    const cameras = cameraArr.map(device => {
        const opts = { device };
        return WebCam.create(opts);
    });
    return cameras;
}

const start = async () => {
    const cameras = await loadCameras();
    console.warn('**** cameras', cameras);
    cameras.forEach(c => {
        c.capture( "test_picture", function( err, data ) {
            console.warn('**** picture received?');
            console.warn('**** err = ', err);
            console.warn('**** data = ', data);
        } );
    });
};

start();
chuckfairy commented 7 years ago

sorry man, while I was testing keeping a camera picture in memory I left some testing code. Remove this line https://github.com/chuckfairy/node-webcam/blob/master/src/Webcam.js#L190 I will fix tomorrow.

ericblade commented 7 years ago

sweet. looks like that solves it. I've been looking for a library to allow simple capturing from multiple webcams simultaneously, or near simultaneously for a while.. so glad to find one that looks like it might fit the bill!