H5 获取前置摄像头

  • Post author:
  • Post category:其他


您可以使用HTML5的

MediaDevices.getUserMedia()

API 来访问设备的摄像头(包括前置摄像头)。

以下是使用

MediaDevices.getUserMedia()

来获取前置摄像头的示例代码:

navigator.mediaDevices.getUserMedia({ video: { facingMode: "user" } })
    .then(function(stream) {
        var video = document.querySelector('video');
        video.srcObject = stream;
        video.play();
    })
    .catch(function(err) {
        console.error("Error getting video:", err);
    });

在此示例中,

facingMode: "user"

表示使用前置摄像头。通过

navigator.mediaDevices.getUserMedia()

API,将获取到一个

MediaStream

对象,您可以将其分配给

<video>

元素的

srcObject

属性,并调用

play()

方法来播放视频。

此外,您需要在浏览器中请求使用摄像头的权限,此示例中使用

getUserMedia()

API 自动提示请求权限,如果您使用的是其他 API,则需要明确请求权限。

请注意,您需要在 HTTPS 网站上才能使用此 API,否则浏览器会阻止访问摄像头。

以下是一个简单的HTML页面示例,可以获取前置摄像头并且兼容iOS:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>获取前置摄像头并兼容iOS</title>
  </head>
  <body>
    <video id="video" width="640" height="480"></video>
    <canvas id="canvas" width="640" height="480"></canvas>
    <script>
      // 判断是不是IOS系统
      var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;

      // 获取video和canvas元素
      var video = document.getElementById('video');
      var canvas = document.getElementById('canvas');
      var ctx = canvas.getContext('2d');

      // 获取媒体流
      navigator.mediaDevices.getUserMedia({
        video: {
          facingMode: isIOS ? 'user' : { exact: 'environment' }
        }
      }).then(function(stream) {
        video.srcObject = stream;
        video.play();
      }).catch(function(err) {
        console.log(err);
      });

      // 绘制视频流到canvas
      function draw() {
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        requestAnimationFrame(draw);
      }

      // 开始绘制
      video.addEventListener('play', function() {
        draw();
      });
    </script>
  </body>
</html>

在上面的代码中,我们首先使用

navigator.mediaDevices.getUserMedia()

方法获得媒体流,并在选项对象中设置了

facingMode

属性。如果是iOS设备,我们将其设置为’user’来获取前置摄像头。在其他设备中,我们将其设置为’environment’来获取后置摄像头。

然后,我们将获取到的媒体流分配给

<video>

元素,开始播放视频。最后,我们使用

<canvas>

元素来绘制视频流,并使用

requestAnimationFrame()

函数创建一个动画效果。

您可以将上面的HTML代码复制到您的IDE中,然后将其保存为一个名为“index.html”的文件,最后在浏览器中打开该文件以查看效果。注意,兼容iOS需要在真实的iOS设备或模拟器上测试。



版权声明:本文为qq_27487739原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。