是否可以从一个或多个摄像头在一个Html页面上嵌入两个网络摄像头流。

时间:2016-02-29 21:26:32

标签: javascript html html5 getusermedia

我试图在一个HTML页面上嵌入两个网络摄像头流。

我用于获取从此网站https://www.kirupa.com/html5/accessing_your_webcam_in_html5.htm

获取的用户媒体脚本

它适用于一个蒸汽,但当我尝试在同一页面上制作两个不同的视频流时,它无法正常工作。

我尝试制作一个带有网格的div标签,并在每个单元格中放置一个视频元素。这导致只有一个流。

这是我最近的尝试



<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta content="stuff, to, help, search, engines, not" name="keywords">
  <meta content="What this page is about." name="description">
  <meta content="Display Webcam Stream" name="title">
  <title>Display Webcam Stream</title>
  
  <style>
    #container {
      margin: 0px auto;
      width: 500px;
      height: 375px;
      border: 10px #333 solid;
    }
    #videoElement {
      width: 500px;
      height: 375px;
      background-color: #666;
    }
    #container2 {
      margin: 0px auto;
      width: 500px;
      height: 375px;
      border: 10px #333 solid;
    }
    #videoElement2 {
      width: 500px;
      height: 375px;
      background-color: #666;
    }
  </style>
</head>

<body style="">
  <div id="container">
    
    <video autoplay id="videoElement">
      
    </video>
  </div>

  <div id="container2">
    
    <video2 autoplay="true" id="videoElement2">
      
    </video2>
  </div>

  <script>
    var video = document.querySelector("#videoElement");

     
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia; 
    if (navigator.getUserMedia) {          
      navigator.getUserMedia({
        video: true
      }, handleVideo, videoError);
    } 

    function handleVideo(stream) {    
      video.src = window.URL.createObjectURL(stream);
    } 

    function videoError(e) {     // do something
    }
  </script>
</body>

</html>
&#13;
&#13;
&#13;

我感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

通过设置video属性,告诉stream元素src要播放的内容。

基本上你需要在这里复制支持videoElement的所有代码,而不仅仅是它的创建。

您遇到的一个问题是,许多浏览器在同一时间(在上一次异步调用完成之前)两次调用getUserMedia时都不满意,因为这会一次性多次提示用户。要解决此问题,请将getUserMedia内的第二个电话放在handleVideo内,以便一次只打扰一个用户。

您遇到的第三个问题是,只有Firefox在权限提示中选择了内置设备,因此在Chrome上您将获得两次相同的相机。

要在其他浏览器上使用此功能,您需要enumerateDevices。我answered that before

最后,大多数智能手机都是硬件限制的,不能同时运行这两款相机。