uvc
v1.0.0
Published
Library for USB Video Class (UVC) devices. Used to write software for webcams, camcorders, etcetera.
Downloads
107
Maintainers
Readme
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.
Installation
npm install --save uvc
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!