node-webcamをmacOS HighSierraで使おうとしてハマった

node-webcamというパッケージをHighSierra環境で使おうとして少し躓いたのでまとめます。 

www.npmjs.com

Node.jsからWebカメラの映像をキャプチャする案件があって、いい感じのパッケージを探していたところ、こちらを発見しました。 どうやらimagesnap等の、ターミナルからWebカメラを操作できる系のコマンドをいい感じにラップしてるみたいです。

とりあえず、imagesnapのインストール。

$ brew install imagesnap

imagesnapは既にインストールされていたので、

$ npm install --save node-webcam  

でパッケージをインストール。

ひとまずbase64で画像データを取得できるかチェック。

var NodeWebcam = require('node-webcam');

NodeWebcam.capture("hoge", {callbackReturn: "base64"}, (err, data) => {
        console.log(data);
});

しかしundefinedが出力されて、一向にキャプチャされず...

imagesnapに問題あり?と思い、imagesnapのGithubを見に行くとmacOS High Sierra での不具合に関してのIssueが解決されたバージョンが新しくリリースされており、

$ brew upgrade imagesnap

imagesnap のバージョンを上げてあげるとちゃんと動きました。。。