DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/node-webcam package

0.8.2 • Public • Published


Cross platform webcam usage



#Linux relies on fswebcam currently

sudo apt-get install fswebcam

#fswebcam requires a build from the AUR, it is not listed for installation on pacman/pamac

sudo pamac build fswebcam


#Mac OSX relies on imagesnap
#Avaliable through brew

brew install imagesnap


Standalone exe included. See src/bindings/CommandCam


API Usage

//Available in nodejs

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

//Default options

var opts = {

    //Picture related

    width: 1280,

    height: 720,

    quality: 100,

    // Number of frames to capture
    // More the frames, longer it takes to capture
    // Use higher framerate for quality. Ex: 60

    frames: 60,

    //Delay in seconds to take shot
    //if the platform supports miliseconds
    //use a float (0.1)
    //Currently only on windows

    delay: 0,

    //Save shots in memory

    saveShots: true,

    // [jpeg, png] support varies
    // Webcam.OutputTypes

    output: "jpeg",

    //Which camera to use
    //Use Webcam.list() for results
    //false for default device

    device: false,

    // [location, buffer, base64]
    // Webcam.CallbackReturnTypes

    callbackReturn: "location",


    verbose: false


//Creates webcam instance

var Webcam = NodeWebcam.create( opts );

//Will automatically append location output type

Webcam.capture( "test_picture", function( err, data ) {} );

//Also available for quick use

NodeWebcam.capture( "test_picture", opts, function( err, data ) {


//Get list of cameras

Webcam.list( function( list ) {

    //Use another device

    var anotherCam = NodeWebcam.create( { device: list[ 0 ] } );


//Return type with base 64 image

var opts = {
    callbackReturn: "base64"

NodeWebcam.capture( "test_picture", opts, function( err, data ) {

    var image = "<img src='" + data + "'>";


Shell Usage

#Config opts

--width Picture width

--height Picture height

--delay Delay till shot

--quality Quality of image 0-100

--output Output type [png, jpg, bmp]

--verbose Verbose debugging

--help Usage help text

--version node-webcam version

--location Location to output webcam capture

--list list available camera devices

#Shorthand options

w: [ "--width" ],

h: [ "--height" ],

d: [ "--delay" ],

q: [ "--quality" ],

out: [ "--output" ],

h: [ "--help", true ],

v: [ "--version", true ],

l: [ "--location" ]

#node-webcam will auto output the file type at the end

node-webcam --w 500 --h 500 --d 2 --l picture # ./bin/node-webcam.js

Generated Documentation

# install yuidoc and run



Main require used. Also has helper functions just for you.

NodeWebcam.create( Object options )

Main factory creation of a webcam for use. Uses NodeWebcam.Factory to create.

//Default options defined in API usage

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

var Webcam = NodeWebcam.create({});

NodeWebcam.capture( String location, Object options, Function callback )

Quick helper for taking pictures via one function. Will return Webcam instance via NodeWebcam.create.

NodeWebcam.capture( "my_picture", {}, function( err, data ) {

    if ( !err ) console.log( "Image created!" );



Base webcam class in which all other cameras inherit from

Webcam.constructor( Object options )

//Default options and basic usage

var opts = {

    width: 1280,

    height: 720,

    delay: 0,

    quality: 100,

    // [jpeg, png] support varies
    // Webcam.OutputTypes

    output: "jpeg",

    device: false,

    // [buffer, base64]
    // Webcam.CallbackReturnTypes

    callbackReturn: "location",

    verbose: false


var cam = new Webcam( opts );



Reset data and memory of past shots

Webcam.capture( String location, Object options, Function callback( Error|Null, Buffer) )

First param of callback will be a possible error or null. Second will return the location of the image or null. The following functions will follow similarly. This function will auto append the output type if not specified in file name.

Webcam.getShot( Number shot, Function callback( Error|Null, Buffer) )

Webcam.getLastShot( Function callback )

Webcam.getBase64( Number|Buffer shot, Function callback( Error|Null, Buffer) )

Get base 64 of shot number or data already grabbed from FS.


Uses the fswebcam program. Available in linux (apt-get install fswebcam). Extra program addons provided in options.

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

var FSWebcam = NodeWebcam.FSWebcam; //require( "node-webcam/webcams/FSWebcam" );

var opts = {};

var cam = new FSWebcam( opts );

What's next?

  • Video capture functionality
  • Battle testing
  • What do you want to see? Leave an issue on the github page!

Package Sidebar


npm i node-webcam

Weekly Downloads






Unpacked Size

200 kB

Total Files


Last publish


  • chuckfairy