使用React调用getUserMedia时的DOMException

问题描述 投票:-1回答:1

我正在为移动设备构建一个Web应用程序。我正在尝试使用谷歌浏览器中的getUserMedia访问相机。

我的应用程序是内置的反应,我在尝试时遇到问题,给我以下错误。

错误:DOMException

import React, { Component } from 'react'
import "./LiveFace.scss";
import Grid from '@material-ui/core/Grid';
import faceimage from "./../../../images/face.png";
import { Button } from '@material-ui/core';
import { updateFace } from "./../actions";
import { connect } from "react-redux";
import LinearProgress from '@material-ui/core/LinearProgress';


export class LiveFace extends Component {

    constructor() {
        super();

        this.state = {
            loading: false,
            progress: 0,
        }
    }


    continue = async (e) => {

    }

    componentDidMount = () => {

        const constraints = { video: { facingMode: 'user' } };

        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            navigator.mediaDevices.getUserMedia(constraints)
                .then(this.handleSuccess.bind(this)).catch(this.handleError.bind(this));
        }

    }

    handleSuccess = (stream) => {

        console.log(this.refs);
        this.track = stream.getTracks()[0];
        this.refs.video.srcObject = stream;
        this.started = true;

    }

    handleError = (error) => {
        console.error('Error: ', error);
    }

    render() {
        const { handleChange } = this.props;
        return (
            <div id="live">
                <div className="videoContainer">
                        <video ref="video" autoPlay playsInline muted></video>
                    </div>
                    <br />
                    <div className="live-footer">

                        <Button className="live-button" type="submit" variant="contained" onClick={this.start} color="primary">
                                Start Live Face Capture
                        </Button>
                        <br />
                    <LinearProgress variant="determinate" className="progress-bar" value={this.state.progress} />

                    </div>

                <canvas ref="canvas" className="screenshotCanvas"></canvas>

            </div>
        )
    }
}

const mapStateToProps = state => ({
});

export default connect(mapStateToProps, {updateFace})(LiveFace);

我在组件安装时请求权限,它在此行navigator.mediaDevices.getUserMedia(constraints)上失败然后抛出一个错误,触发handleError()函数,控制台日志就是你在上面的错误引用中可以看到的。

它没有提供更多细节,有人能告诉我这里发生了什么吗?

reactjs getusermedia
1个回答
0
投票

错误:DOMException

在某些情况下会出现此错误,例如,您没有将相机连接到系统或系统中未安装驱动程序。

另一种情况是需要安全连接。

© www.soinside.com 2019 - 2024. All rights reserved.