Node.js library for USB Video Class (UVC) devices (node-uvc
)
Node.js library for USB Video Class (UVC) devices. Used to write software for webcams, camcorders, etcetera.
UVC-compliant devices include webcams, digital camcorders, transcoders, analog video converters and still-image cameras.
Features
Functional:
- Locate UVC devices on the system and retrieve out device details.
- Change camera controls, such as image contrast, zoom, and toggling automatic settings.
- Stream video and individual image frames.
- Transform image data using standard Node.js streams.
Technical:
- Thin translation layer built for Javascript developer convenience.
- Ships with pre-built binaries from
@ffi-libraries/libuvc-v0.0.6
. - Based on the
libuvc
cross-platform C library.
- Ships with pre-built binaries from
- Javascript
class
implementation.- Asynchronous
async
/await
class methods. - Resource management using
.initialize()
/.uninitialize()
methods.
- Asynchronous
Installation
Requires Node.js (node
and npm
commands). Published on npm as uvc
.
npm install --save uvc
Usage
See ./examples/
for ready-to-run code.
const { Context, Device, DeviceHandle, LibUvc } = require("uvc");
const libuvc = new LibUvc();
await libuvc.initialize();
const context = new Context(libuvc);
await context.initialize();
const device = await context.findDevice();
await device.initialize();
const deviceHandle = await device.open();
await deviceHandle.initialize();
// NOTE: use the UVC device here, for example using the Controls and FrameStreamer classes.
await deviceHandle.uninitialize();
await device.uninitialize();
await context.uninitialize();
await libuvc.uninitialize();
Development
- Requires a UVC device, such as a compatible webcam.
- Get the source code from the
node-uvc
repository. - Follow git-flow and use git-flow-avh.
- Make sure that all example code works by testing them manually.
# Make sure git-flow is initialized.
git flow init -d
npm run --silent test
See also
uvcc
for a command line interface (CLI).- USB Video Class on Wikipedia.
- List of USB video class devices on Wikipedia.
- The
@ffi-libraries/libuvc-v0.0.6
Node.js wrapper forlibuvc
. - The
v4l-utils
for video4linux (Wikipedia), which includesv4l2-ctl
.
node-uvc
Copyright © 2020, 2021 Joel Purra. Released under GNU Lesser General Public License version 3.0 (LGPL-3.0). Your donations are appreciated!