1.0.4 • Published 7 years ago
node-v4l2camera v1.0.4
node-v4l2camera
Capturing images from USB(UVC) webcam on linux machines.
Requirements
- node >= 4.x
- video4linux2 headers
- c and c++ compiler with
-std=c11and-std=c++14- gcc >= 4.9
Install
On linux machines:
npm install v4l2camera- package details: https://npmjs.org/package/v4l2camera
Usage
var v4l2camera = require("v4l2camera");
var cam = new v4l2camera.Camera("/dev/video0");
if (cam.configGet().formatName !== "MJPG") {
console.log("NOTICE: MJPG camera required");
process.exit(1);
}
cam.start();
cam.capture(function (success) {
var frame = cam.frameRaw();
require("fs").createWriteStream("result.jpg").end(Buffer(frame));
cam.stop();
});For more detail see: examples/*.js (required "pngjs" modules)
API
Initializing and Configuration API
var cam = new v4l2camera.Camera(device)device: e.g."/dev/video0"
cam.formats: Array of available frame formatsvar format = cam.formats[n]format.formatName: Name of pixel format. e.g."YUYV","MJPG"format.format: ID number of pixel formatformat.width: Frame widthformat.height: Frame heightformat.interval.numeratorandformat.interval.denominator: Capturing interval pernumerator/denominatorseconds (e.g. 30fps is 1/30)
cam.configSet(format): Set capturewidth,height,intervalpernumerator/denominatorsec if the members exist in theformatobjectcam.configGet(): Get aformatobject of current config
Capturing API (control flow)
cam.start()cam.stop(afterStoped)- call re-
config(format)or re-start()inafterStoped()callback
- call re-
cam.capture(afterCaptured): Do cache a current captured frame- use
cam.frameRaw()inafterCaptured(true)callback
- use
Capturing API (frame access)
cam.frameRaw(): Get the cached raw frame asUint8Array(YUYU frame is array of YUYV..., MJPG frame is single JPEG compressed data)cam.toYUYV(): Get the cached frame asUint8Arrayof pixels YUYVYUYV... (will be deprecated method)cam.toRGB(): Get the cached frame asUint8Arrayof pixels RGBRGB... (will be deprecated method)
Capturing API (camera frame info)
cam.device: the device file name e.g."/dev/video0"cam.width: pixel width of the cameracam.height: pixel height of the camera
Control API
cam.controls: Array of the control informationcam.controlGet(id): Get int value of the control of theid(id is one of cam.controlsn.id)cam.controlSet(id, value): Set int value of the control of theidvar control = cam.controls[n]: Control speccontrol.id: Controlidfor controlGet and controlSetcontrol.name: Control name stringcontrol.type:"int","bool","button","menu"or other typescontrol.max,control.min,control.step: value should bemin <= vandv <= maxand(v - min) % step === 0control.default: default value of the controlcontrol.flags: Several bool flags of the controlscontrol.menu: Array of items. A control value is the index of the menu item when type is"menu".
Build for Development
On linux machines:
cd myproject
mkdir -p node_modules
cd node_modules
git clone https://github.com/bellbind/node-v4l2camera.git v4l2camera
cd v4l2camera
npm install
cd ../.."build/Release/v4l2camera.node" is exist after the build.
Tested Environments
- Ubuntu wily armhf on BeagleBone Black with USB Buffalo BSW13K10H
- Ubuntu wily amd64 on Acer Aspire One with its screen facecam
- Travis-CI (build only):
Licenses
1.0.4
7 years ago