Navigator.mediadevices.getUserMedia()无法访问笔记本电脑的内置摄像头

时间:2019-04-12 04:38:32

标签: javascript webrtc recordrtc

我正在开发一个用于视频记录的Web应用程序。

我尝试了下面的代码,但是问题是它可以与外部摄像机一起正常工作,但是在具有相同浏览器的笔记本电脑内置摄像机中,没有出现“找不到对象”错误。

我正在使用Firefox 60.6.1

     if (navigator.mediaDevices.getUserMedia) {       
      navigator.mediaDevices.getUserMedia(constraints)
      .then(function(stream) {
    //load the stream in the video variable
        video.srcObject = stream;
    //load the stream in revokeAccess variable 
        revokeAccess=stream;
    //video playback
        video.play(); 
    /*
    Optional to avoid the dual audio disturbance. Playback audio is muted
    */
    video.muted= true;


    if (MediaRecorder.isTypeSupported('video/webm;codecs=vp9')) {
      var options = {mimeType: 'video/webm;codecs=vp9'};
      console.log("using vp9");
    } else if (MediaRecorder.isTypeSupported('video/webm;codecs=h264')) {
      var options = {mimeType: 'video/webm;codecs=h264'};
      console.log("using h264");
    } else  if (MediaRecorder.isTypeSupported('video/webm;codecs=vp8')) {
      var options = {mimeType: 'video/webm;codecs=vp8',videoBitsPerSecond : 1500000,audioBitsPerSecond : 160000};
      console.log("using vp8");
    }else{
    console.log('isTypeSupported is not supported, using default codecs for browser');
    } 

    //load the stream and type of video in the function
    mediaRecorder = new MediaRecorder(stream,options);
    //handle the data availability
    mediaRecorder.ondataavailable = handleDataAvailable;
    //Start the recording
    mediaRecorder.start(); 

    alert("Started Recording");


    //push the data into chunks(array)
    function handleDataAvailable(event) {
     if (event.data.size > 0) {
       recordedChunks.push(event.data);
        console.log(recordedChunks);
     } else {
      alert(event);
     }
    }
    //disable the Start Recording button
    document.getElementById("startRecording").disabled = true;  
      })
      .catch(function(error) {
    //handle the device not found exception
        alert("Camera not Found !! Please connect camera properly");
        console.log(error);
      });
    }

我希望应用程序可以在每个平台上运行。

2 个答案:

答案 0 :(得分:0)

您好,所有开发人员。感谢您的支持和快速响应。

我在代码中使用以下适配器添加项解决了该问题。

var getUserMedia = navigator.getUserMedia ||
navigator.mozGetUserMedia ||
navigator.webkitGetUserMedia;

答案 1 :(得分:0)

如果要支持旧版浏览器,请检查以下内容。

https://github.com/webrtcHacks/adapter

  

WebRTC适配器

     

adapter.js是用于隔离应用程序规格变化和前缀的填充程序   差异。实际上,用于WebRTC的标准和协议   实现是高度稳定的,只有几个前缀   名称。有关完整的互操作信息,请参阅webrtc.org/web-apis/interop。

     

此存储库曾经是github上WebRTC组织的一部分   但感动了。我们的目标是用新的旧存储库进行更新   发布。

此外,您可以从firefox检查您的硬件环境。

在浏览器的地址栏中键入以下内容

  

关于:支持