Gathering detailed insights and metrics for reeo-react-record-webcam
Gathering detailed insights and metrics for reeo-react-record-webcam
Gathering detailed insights and metrics for reeo-react-record-webcam
Gathering detailed insights and metrics for reeo-react-record-webcam
npm install reeo-react-record-webcam
Typescript
Module System
Node Version
NPM Version
68.9
Supply Chain
93.9
Quality
74.7
Maintenance
100
Vulnerability
100
License
TypeScript (100%)
Total Downloads
230
Last Day
1
Last Week
4
Last Month
8
Last Year
53
72 Commits
1 Branches
Minified
Minified + Gzipped
Latest Version
0.0.1
Package Id
reeo-react-record-webcam@0.0.1
Unpacked Size
56.87 kB
Size
9.97 kB
File Count
20
NPM Version
7.24.0
Node Version
16.10.0
Cumulative downloads
Total Downloads
Last day
0%
1
Compared to previous day
Last week
300%
4
Compared to previous week
Last month
300%
8
Compared to previous month
Last year
-27.4%
53
Compared to previous year
Webcam recording hook and component for React. Works in all latest browser versions, although Safari requires MediaRecorder to be enabled in the experimental features.
npm i reeo-react-record-webcam
Or
yarn add reeo-react-record-webcam
import { useRecordWebcam } from 'reeo-react-record-webcam'
function RecordVideo(props) {
const recordWebcam = useRecordWebcam();
const saveFile = async () => {
const blob = await recordWebcam.getRecording();
...
};
return (
<div>
<p>Camera status: {recordWebcam.status}</p>
<button onClick={recordWebcam.open}>Open camera</button>
<button onClick={recordWebcam.start}>Start recording</button>
<button onClick={recordWebcam.stop}>Stop recording</button>
<button onClick={recordWebcam.retake}>Retake recording</button>
<button onClick={recordWebcam.download}>Download recording</button>
<button onClick={saveFile}>Save file to server</button>
<video ref={recordWebcam.webcamRef} autoPlay muted />
<video ref={recordWebcam.previewRef} autoPlay muted loop />
</div>
)
}
Import the hook and initialize it in your function. The hook returns refs for both preview and recording video elements, functions to control recording (open, start, stop, retake, download) and camera status.
import { useRecordWebcam, CAMERA_STATUS } from 'reeo-react-record-webcam'
You can also import the CAMERA_STATUS
constant to check for different states and toggle your UI accordingly. Check the CodeSandbox demo for a more thorough example on how to do this.
Passing options:
const OPTIONS = { ... }
const recordWebcam = useRecordWebcam(OPTIONS);
Options | |
---|---|
filename: string | Filename for download |
recordingLength: number | Length of recording in seconds |
fileType: 'mp4' | 'webm' | File container for download. Will also set mimeType. |
aspectRatio: number | Video aspect ratio, default is 1.77 |
codec: object | { audio: 'aac' | 'opus', video: 'av1' | 'avc' | 'vp8' } |
width: number | Video width |
height: number | Video height |
disableLogs: boolean | Disable status logs from console |
import { RecordWebcam } from 'reeo-react-record-webcam'
...
function RecordVideo(props) {
return (
<RecordWebcam />
)
}
You can include the component as is and it will render controls, video and preview elements. Alternatively you can use the render prop for more control:
function RecordVideo(props) {
return (
<RecordWebcam
render={(props: WebcamRenderProps) => {
return (
<div>
<h1>Component render prop demo</h1>
<p>Camera status: {props.status}</p>
<div>
<button onClick={props.openCamera}>Open camera</button>
<button onClick={props.retake}>Retake</button>
<button onClick={props.start}>Start recording</button>
<button onClick={props.stop}>Stop recording</button>
<button onClick={props.download}>Download</button>
</div>
</div>
);
}}
/>
)
}
Props | |
---|---|
cssNamespace: string | Set a namespace for the component CSS classes |
downloadFileName: string | Filename for video download |
getStatus: () => string | Callback to get webcam status |
recordingLength: number | Set max recording length in seconds |
namespace: string | Pass own CSS namespace |
options: object | Options for recording video |
fileType: 'mp4' | 'webm' | |
width: number | |
height: number | |
aspectRatio: number | |
codec: { audio: 'aac' | 'opus', video: 'av1' | 'avc' | 'vp8' } | |
disableLogs: boolean | |
controlLabels: object | Pass custom labels to control buttons |
CLOSE: string | number | |
DOWNLOAD: string | number | |
OPEN: string | number | |
RETAKE: string | number | |
START: string | number | |
STOP: string | number | |
render | Render prop that passes status and controls |
openCamera: () => void | |
closeCamera: () => void | |
start: () => void | |
stop: () => void | |
retake: () => void | |
download: () => void | |
getRecording: () => void | |
status: string |
You can use the below default class names or pass your own namespace to replace the default reeo-react-record-webcam
.
className |
---|
|reeo-react-record-webcam__wrapper
|reeo-react-record-webcam__status
|reeo-react-record-webcam__video
|reeo-react-record-webcam__controls
|reeo-react-record-webcam__controls-button
No vulnerabilities found.
No security vulnerabilities found.