react-webcam

Webcam component

Github星跟踪图

react-webcam

Build Status
downloads

Webcam component for React. See this
for browser compatibility.

Note: Browsers will throw an error if the page is loaded from insecure origin. I.e. Use https.

Installation

npm install react-webcam

Demo

https://codepen.io/mozmorris/pen/JLZdoP

Usage

import React from "react";
import Webcam from "react-webcam";

const WebcamComponent = () => <Webcam />;

Props

The props here are specific to this component but one can pass any prop to the underlying video tag eg className or style, prop, type, default, notes, -------------------------, --------, ------------, ---------------------------------------------------------------------------------------, audio, boolean, true, enable/disable audio, audioConstraints, object, MediaStreamConstraint(s) for the audio, forceScreenshotSourceSize, boolean, false, uses size of underlying source video stream (and thus ignores other size related props), imageSmoothing, boolean, true, pixel smoothing of the screenshot taken, mirrored, boolean, false, show camera preview and get the screenshot mirrored, minScreenshotHeight, number, min height of screenshot, minScreenshotWidth, number, min width of screenshot, onUserMedia, function, noop, callback for when component receives a media stream, onUserMediaError, function, noop, callback for when component can't receive a media stream with MediaStreamError param, screenshotFormat, string, 'image/webp', format of screenshot, screenshotQuality, number, 0.92, quality of screenshot(0 to 1), videoConstraints, object, MediaStreamConstraints(s) for the video, ### Methods

getScreenshot - Returns a base64 encoded string of the current webcam image. Example:

CodePen demo

const videoConstraints = {
  width: 1280,
  height: 720,
  facingMode: "user"
};

const WebcamCapture = () => {
  const webcamRef = React.useRef(null);

  const capture = React.useCallback(
    () => {
      const imageSrc = webcamRef.current.getScreenshot();
    },
    [webcamRef]
  );

  return (
    <>
      <Webcam
        audio={false}
        height={720}
        ref={webcamRef}
        screenshotFormat="image/jpeg"
        width={1280}
        videoConstraints={videoConstraints}
      />
      <button onClick={capture}>Capture photo</button>
    </>
  );
};

Choosing a camera

User/Selfie/forward facing camera

class WebcamCapture extends React.Component {
  render() {
    const videoConstraints = {
      facingMode: "user"
    };

    return <Webcam videoConstraints={videoConstraints} />;
  }
}

Environment/Facing-Out camera

class WebcamCapture extends React.Component {
  render() {
    const videoConstraints = {
      facingMode: { exact: "environment" }
    };

    return <Webcam videoConstraints={videoConstraints} />;
  }
}

For more information on facingMode, please see the MDN web docs https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode

Show all cameras by deviceId

const WebcamCapture = () => {
  const [deviceId, setDeviceId] = React.useState({});
  const [devices, setDevices] = React.useState([]);

  const handleDevices = React.useCallback(
    mediaDevices =>
      setDevices(mediaDevices.filter(({ kind }) => kind === "videoinput")),
    [setDevices]
  );

  React.useEffect(
    () => {
      navigator.mediaDevices.enumerateDevices().then(handleDevices);
    },
    [handleDevices]
  );

  return (
    <>
      {devices.map((device, key) => (
          <div>
            <Webcam audio={false} videoConstraints={{ deviceId: device.deviceId }} />
            {device.label, `Device ${key + 1}`}
          </div>

        ))}
    </>
  );
};

Using within an iframe

The Webcam component will fail to load when used inside a cross-origin iframe in newer version of Chrome (> 64). In order to overcome this security restriction a special allow attribute needs to be added to the iframe tag specifying microphone and camera as the required permissions like in the below example:

<iframe src="https://my-website.com/page-with-webcam" allow="camera; microphone;"/>

License

MIT

主要指标

概览
名称与所有者mozmorris/react-webcam
主编程语言TypeScript
编程语言JavaScript (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2014-12-13 10:50:11
推送于2024-05-30 15:51:09
最后一次提交2024-01-08 09:27:15
发布数50
最新版本名称v7.1.1 (发布于 2023-06-07 15:17:38)
第一版名称v0.1.0 (发布于 )
用户参与
星数1.7k
关注者数24
派生数288
提交数382
已启用问题?
问题数287
打开的问题数62
拉请求数101
打开的拉请求数5
关闭的拉请求数19
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?