@webcam/react
v1.0.1
Published
Ultimate tool for working with media stream and displaying it in your React application
Downloads
355
Maintainers
Readme
📸 Webcam React
Ultimate tool for working with media stream in your React application
References
Installation
npm i @webcam/react
# or
yarn add @webcam/react
🦉 Philosophy
📸 Webcam React is a package that includes ready-made solutions for common cases of setting up and using a media stream from your webcam using Web API. Our goal is to create simple and flexible tools that allow users to create, test and maintain their products.
Features
- TypeScript support out of the box - full typed package
- Webcam Snapshots - creating an image from a video stream
- Media Stream Handling - request, errors, update, stop, etc
- Advanced Video Settings - selecting camera type and resolution
- Legacy API Support - outdated implementations for each browser
- React Apps Support - component and hooks for working with playing a media stream
Usage
import React from 'react';
import ReactDOM from 'react-dom';
import { Webcam } from '@webcam/react';
const App = () => (
<Webcam />
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App/>);
How to get webcam snapshot
Returns a base64 encoded string of the current video stream frame in the specified format and quality.
import { Webcam } from '@webcam/react';
const YourComponent = () => (
<Webcam mirrored>
{({ getSnapshot }) => (
<button onClick={() => getSnapshot({ quality: 0.8 })}>
Make photo
</button>
)}
</Webcam>
);
API
You can pass any supported properties to the underlying video tag (eg autoPlay
, className
, etc). However, for convenience, the component uses its own values for these properties, but you can reassign them without any problems:
| Prop | Type | Default | Note |
| ------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------- |
| muted | boolean | true | excludes audio constraints from the MediaStream request |
| autoPlay | boolean | true | |
| playsInline | boolean | true | |
| controls | boolean | false | |
The component also supports many properties for more specific work:
| Prop | Type | Default | Note |
| ------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------- |
| mirrored | boolean | false | show camera preview and get the screenshot mirrored |
| mainCamera | boolean | object | false | should use a main camera (requires Navigator.mediaDevices.enumerateDevices) |
| frontCamera | boolean | false | should use a front camera (MediaTrackConstraints['facingFront'] === 'user') |
| applyConstraints | boolean | false | should new constraints be applied to the media stream |
| cameraResolutionMode | string | 'ideal' | video track resolution mode - ('min' \| 'max' \| 'ideal' \| 'exact')
|
| cameraResolutionType | string | | video track resolution size - ('UHD' \| 'QHD' \| 'FHD' \| 'HD')
|
| requestTimeLimit | number | | limiting the media stream request by time |
| onStreamRequest | function | | callback for when component requests a media stream |
| onStreamStart | function | | callback for when component starts a media stream |
| onStreamStop | function | | callback for when component stops a media stream |
| onStreamError | function | | callback for when component can't receive a media stream |
| audioConstraints | object ||MediaStreamConstraints['audio']|
| videoConstraints | object ||MediaStreamConstraints['video']|
| stream | object ||external MediaStream (turns off internal media stream handling logic)|