zoukankan      html  css  js  c++  java
  • JavaScripts调用摄像头【MediaDevices.getUserMedia()】

    h5调用摄像头(允许自定义界面)【MediaDevices.getUserMedia()

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
          .video-wrapper{
            position: relative;
          }
          .mask{
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            background-color: rgba(0, 0, 0, .6);
          }
          .content{
            position: absolute;
            top: 30px;
            bottom: 30px;
            left: 30px;
            right: 30px;
            z-index: 9;
          }
      </style>
    </head>
    <body>
      <div class="video-wrapper">
        <div class="mask"></div>
        <div class="content">
          <video id="video" width="480" height="320" controls>
          </video>
        </div>
      </div>
      <div>
        <button id="capture">拍照</button>
      </div>
      <canvas id="canvas" width="480" height="320"></canvas>
      <script>
        //访问用户媒体设备的兼容方法
        function getUserMedia(constraints, success, error) {
          if (navigator.mediaDevices.getUserMedia) {
            //最新的标准API
            navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);
          } else if (navigator.webkitGetUserMedia) {
            //webkit核心浏览器
            navigator.webkitGetUserMedia(constraints,success, error)
          } else if (navigator.mozGetUserMedia) {
            //firfox浏览器
            navigator.mozGetUserMedia(constraints, success, error);
          } else if (navigator.getUserMedia) {
            //旧版API
            navigator.getUserMedia(constraints, success, error);
          }
        }
     
        let video = document.getElementById('video');
        let canvas = document.getElementById('canvas');
        let context = canvas.getContext('2d');
     
        function success(stream) {
          //兼容webkit核心浏览器
          let CompatibleURL = window.URL || window.webkitURL;
          //将视频流设置为video元素的源
          console.log(stream);
     
          //video.src = CompatibleURL.createObjectURL(stream);
          video.srcObject = stream;
          video.play();
        }
     
        function error(error) {
          console.log(`访问用户媒体设备失败${error.name}, ${error.message}`);
        }
     
        if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {
          //调用用户媒体设备, 访问摄像头
          getUserMedia({video : { 480, height: 320}}, success, error);
        } else {
          alert('不支持访问用户媒体');
        }
     
        document.getElementById('capture').addEventListener('click', function () {
          context.drawImage(video, 0, 0, 480, 320);      
        })
      </script>
    </body>
    </html>
    

      

     
  • 相关阅读:
    关于iOS开发property with 'retain(or strong)' attribute must be of object type
    机器学习之神经网络
    一些知名的开源社区
    机器学习之正则化
    机器学习之逻辑回归(logistic回归)
    机器学习之正规方程法
    机器学习之线性回归、多项式回归
    机器学习之梯度下降法
    64位windows7下安装python,配置numpy和matplotlib库
    mysql分区查询
  • 原文地址:https://www.cnblogs.com/jingxuan-li/p/14751323.html
Copyright © 2011-2022 走看看