首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: navigator.getUserMedia不是函数

TypeError: navigator.getUserMedia不是函数
EN

Stack Overflow用户
提问于 2020-11-14 13:52:01
回答 2查看 1.5K关注 0票数 1

我正在尝试构建一个点对点聊天的视频应用程序,但每当我在firefox中打开该应用程序时,它都会抛出错误

代码语言:javascript
复制
TypeError: navigator.getUserMedia is not a function

它在google chrome中运行良好,但是firefox停止并抛出一个错误。

下面是我的代码

代码语言:javascript
复制
import React, { Component } from 'react'
import './video.css'
import MicOutlined from '@material-ui/icons/MicOutlined'
import VideoCall from '@material-ui/icons/VideoCall'
export default class Video extends Component {
    componentDidMount = () => {
        const localStream = document.querySelector("video.localStreamVideo")

        const browserSupportsMedia = () => {
            return navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.mzGetUserMedia
        }

        const fetchLocalStream = () => {
            let constraints = { video: true, audio: false }
            navigator.getUserMedia(
                constraints,
                (stream) => {
                    localStream.srcObject = stream
                    localStream.addEventListener("loadedmetadata", () => localStream.play())
                },
                (error) => {
                    console.log(error.name)
                }
            )
        }



        browserSupportsMedia() && fetchLocalStream()

    }
    render() {
        return (
            <div className='video_container'>
                <video muted={this.state.video.localVideo.audio_mute} controls autoPlay className='video localStreamVideo'>

                </video>
                <div className='localStreamVideoControls'>
                    <MicOutlined onClick={() => this.toggleLocalVideoMuteState()} className='mic_normal controls' />
                    <VideoCall className="video_normal controls" />
                </div>
            </div>
        )
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-14 14:01:48

Navigator.getUserMedia()已弃用。改用navigator.mediaDevices.getUserMedia()

Read this

This is the docs for navigator.mediaDevices.getUserMedia()

票数 1
EN

Stack Overflow用户

发布于 2020-11-14 13:57:34

navigator.getUserMedia()已弃用,请改用navigator.mediaDevices.getUserMedia()

尝试:

代码语言:javascript
复制
const browserSupportsMedia = () => {
    return navigator.mediaDevices.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.mzGetUserMedia
}

const fetchLocalStream = () => {
    let constraints = { video: true, audio: false }
    navigator.mediaDevices.getUserMedia(
        constraints,
        (stream) => {
            localStream.srcObject = stream
            localStream.addEventListener("loadedmetadata", () => localStream.play())
        },
        (error) => {
            console.log(error.name)
        }
    )
}

点击这里阅读更多内容:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64831341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档