前端页面展示本电脑的摄像头,并使用js获取摄像头列表

可以通过 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 获取电脑上的摄像头列表。以下是一个示例代码,可以展示摄像头列表并选择进行预览。

HTML + JavaScript 实现摄像头列表展示和预览

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>摄像头列表</title>
</head>
<body>
    <h1>摄像头选择</h1>
    <select id="cameraSelect"></select>
    <button onclick="startCamera()">开始预览</button>
    <video id="videoPreview" autoplay playsinline style="width: 100%; max-width: 600px;"></video>

    <script>
        const videoElement = document.getElementById('videoPreview');
        const selectElement = document.getElementById('cameraSelect');

        // 获取摄像头设备列表
        async function getCameraDevices() {
            const devices = await navigator.mediaDevices.enumerateDevices();
            const videoDevices = devices.filter(device => device.kind === 'videoinput');
            
            selectElement.innerHTML = '';  // 清空下拉框

            videoDevices.forEach((device, index) => {
                const option = document.createElement('option');
                option.value = device.deviceId;
                option.text = device.label || `摄像头 ${index + 1}`;
                selectElement.appendChild(option);
            });
        }

        // 启动摄像头
        async function startCamera() {
            const selectedDeviceId = selectElement.value;
            const constraints = {
                video: {
                    deviceId: selectedDeviceId ? { exact: selectedDeviceId } : undefined
                }
            };

            const stream = await navigator.mediaDevices.getUserMedia(constraints);
            videoElement.srcObject = stream;
        }

        // 页面加载时自动获取摄像头
        window.onload = getCameraDevices;
    </script>
</body>
</html>

说明

  • 核心方法 :
    • navigator.mediaDevices.enumerateDevices():列出所有音视频设备。
    • 过滤出 videoinput 类型的设备即为摄像头。
  • 下拉框动态生成 :遍历摄像头设备,将其添加到 <select> 下拉框中。
  • 设备启动 :调用 navigator.mediaDevices.getUserMedia(),使用选定摄像头进行视频预览。这个时候会提示访问权限,要点击允许就可以了

注意事项

  1. 浏览器权限:首次访问页面时,浏览器会请求访问摄像头权限。用户拒绝后,设备列表可能为空。
  2. HTTPS要求getUserMedia 只能在 HTTPS 或 localhost 上使用。
  3. 标签问题:某些设备的标签只有在用户授权访问后才能显示。

运行后,你的页面会自动检测并展示摄像头设备列表,选择设备并点击"开始预览"即可看到实时摄像头画面。但是获取到的本机摄像头没有label标签,不确定外接摄像头是否有标签。

相关推荐
云枫晖2 分钟前
Webpack系列-开发环境
前端·webpack
Rverdoser7 分钟前
制作网站的价格一般由什么组成
前端·git·github
拉不动的猪7 分钟前
深入理解 JavaScript 中的静态属性、原型属性与实例属性
前端·javascript·面试
linda261815 分钟前
链接形式与跳转逻辑总览
前端·javascript
怪可爱的地球人19 分钟前
骨架屏
前端
用户6778471506223 分钟前
前端将html导出为word文件
前端
前端付豪25 分钟前
如何使用 Vuex 设计你的数据流
前端·javascript·vue.js
李雨泽27 分钟前
通过 Prisma 将结构推送到数据库
前端
前端小万32 分钟前
使用 AI 开发一款聊天工具
前端·全栈
咖啡の猫1 小时前
Vue消息订阅与发布
前端·javascript·vue.js