前端頁面展示本電腦的攝像頭,并使用js獲取攝像頭列表

可以通過 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 獲取電腦上的攝像頭列表。以下是一個示例代碼,可以展示攝像頭列表并選擇進行預覽。

HTML + JavaScript 實現攝像頭列表展示和預覽

<!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標簽,不確定外接攝像頭是否有標簽。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64564.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【漫話機器學習系列】028.CP

Mallows’ Cp&#xff1a;標準化公式解析與應用 Mallows’ Cp 是一種常用的模型選擇工具&#xff0c;用于在一系列候選模型中權衡擬合度和復雜性&#xff0c;幫助我們選擇性能最優的模型。本文將基于其標準化公式展開詳細解析&#xff0c;并探討其應用場景、實現方法、優點與局…

期末算法分析程序填空題

目錄 5-1 最小生成樹&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-3 歸并排序(遞歸法) 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-4 求解編輯距離問題&#xff08;動態規劃法&#xff09;…

深入解析 Conda 安裝的默認依賴包及其作用:conda create安裝了哪些包(中英雙語)

深入解析 Conda 安裝的默認依賴包及其作用 當我們使用 Conda 創建新環境時&#xff0c;例如執行命令&#xff1a; conda create -n olmes python3.10Conda 會自動為我們安裝一系列基礎依賴包&#xff0c;保證 Python 環境能夠正常運行。這些包不僅是我們開發的基礎工具&#…

Mac、Linux命令

Linux 查本機IP&#xff1a;ip addr 查詢文件里符合條件的字符串&#xff1a;grep Mac 查本機IP&#xff1a;ipconfig

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的發展&#xff0c;在現在&#xff0c;編程技術的IDE里面也融合了AI的基本操做。本例&#xff0c;以微軟的Visual Studio中的人工智能的功能介紹例子。 本例的環境&#xff1a; Visual Studio 17.12 1 AI 智能變量檢測&#xff1a; 上圖展示了一…

江科大學習筆記之——HAL庫點亮一個LED燈

HAL三步走&#xff1a;1.建工程。2.設配置。3.寫代碼 一.建立工程 HAL庫寫法 點擊FinIsh 2.配置時鐘 2 、設置配置參數 把模塊.C.h單獨設置文件 生產代碼 三寫代碼 控制GPIO就三步 1.RCC時鐘使能 2.結構體配置GPIO寄存器 3.控制GPIO值 上面的步驟已經把前兩步的配置完成了接下…

Spring MVC (下)小項目實戰

1. 加法計算器 需求分析: 客戶端輸入倆個數,服務端進行相加然后返回結果. 約定前后端交互接口: 接口的概念: 接口?叫API&#xff08;ApplicationProgrammingInterface),我們?般講到 接口或者API&#xff0c;指的都是同?個東西.是指應?程序對外提供的服務的描述,?于交換信…

在K8S中,如何查看Pod狀態的詳情?事件顯示cpu不足如何處理?

在Kubernetes中&#xff0c;查看Pod狀態的詳細通常設計使用kubectl命令行工具&#xff0c;這是kubernetes提供的一個強大的管理工具。以下是如何查看Pod狀態詳情的步驟&#xff1a; 1. 查看Pod狀態詳情 列出所有Pod&#xff1a; 使用kubectl get pods命令可以查看集群所有Po…

詳細講一下React中的路由React Router

1. 基本概念 React Router 是 React 的路由管理庫&#xff0c;用于在 React 應用中實現頁面導航和路由控制。 2. 安裝 npm install react-router-dom 3. 基礎用法 // App.jsx import { BrowserRouter, Routes, Route, Link } from react-router-domfunction App() {return (…

人工智能的視覺天賦:一文讀懂卷積神經網絡

什么是CNN&#xff1f; CNN&#xff0c;全稱為卷積神經網絡&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一種模擬人類視覺感知機制的人工神經網絡。它通過層疊的卷積、池化等操作&#xff0c;從數據中提取關鍵特征&#xff0c;進而完成分類、識別或預…

【OpenGL ES】GLSL基礎語法

1 前言 本文將介紹 GLSL 中數據類型、數組、結構體、宏、運算符、向量運算、矩陣運算、函數、流程控制、精度限定符、變量限定符&#xff08;in、out、inout&#xff09;、函數參數限定符等內容&#xff0c;另外提供了一個 include 工具&#xff0c;方便多文件管理 glsl 代碼&a…

使用 ECharts 與 Vue 構建數據可視化組件

在前端開發中&#xff0c;數據可視化是非常重要的一部分。ECharts 作為一個功能強大且易于使用的開源數據可視化庫&#xff0c;被廣泛應用于各種圖表展示需求中。而 Vue.js 是當下流行的前端框架之一&#xff0c;它的數據驅動和組件化開發模式讓我們能輕松地將 ECharts 集成到 …

RPA系列-uipath 學習筆記4

使用Uipath 處理hover的問題 備注&#xff1a;使用uipath stversion&#xff1a;2024.10.6,所有學習來源自uipath Academy 首先&#xff0c;打開uipath給我們提供的一個網站 ACME,這個網站呢&#xff0c;需要提前注冊一下的哈。 今天呢&#xff0c;就是記錄一下&#xff0c;怎…

Linux:進程概念

1.馮諾依曼體系結構 結論&#xff1a; --- CPU不和外設直接打交道&#xff0c;和內存直接打交道。 --- 所有的外設&#xff0c;有數據需要收入&#xff0c;只能載入到內存中&#xff1b;內存寫出&#xff0c;也一定是寫道外設中。 --- 為什么程序要運行必須加載到內存&#xf…

活動預告 | Microsoft Azure 在線技術公開課:使用 Azure OpenAI 服務構建生成式應用

課程介紹 通過 Microsoft Learn 免費參加 Microsoft Azure 在線技術公開課&#xff0c;掌握創造新機遇所需的技能&#xff0c;加快對 Microsoft Cloud 技術的了解。參加我們舉辦的“使用 Azure OpenAI 服務構建生成式應用”活動&#xff0c;了解如何使用包括 GPT 在內的強大的…

Linux(Centos 7.6)常見基礎配置

1.網絡配置 網絡配置詳見&#xff1a;VMware安裝Linux(Centos 7.6)后網絡配置 2.yum源配置 yum源配置詳見&#xff1a;Linux(Centos 7.6)yum源配置 3.主機名配置 1.Linux(Centos 7.6)系統安裝后&#xff0c;沒有配置主機名時&#xff0c;root用戶登錄后&#xff0c;是如下…

【PyCharm】如何把本地整個項目同步到服務器?

在PyCharm中&#xff0c;您可以使用部署功能將項目同步到服務器。以下是步驟和示例配置&#xff1a; 打開PyCharm&#xff0c;選擇您的項目。 點擊菜單欄的 “File” -> “Settings” -> “Build, Execution, Deployment”。 在左側菜單中&#xff0c;選擇 “Deployme…

電子電器架構 ---什么是智能電動汽車上的逆變器?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 所謂雞湯,要么蠱惑你認命,要么慫恿你拼命,但都是回避問題的根源,以現象替代邏輯,以情緒代替思考,把消極接受現實的懦弱,偽裝成樂觀面對不幸的…

Flutter:打包apk,詳細圖文介紹

困擾了一天&#xff0c;終于能正常打包apk安裝了&#xff0c;記錄下打包的流程。建議參考我這篇文章時&#xff0c;同時看下官網的構建說明。 官網構建并發布 Android 應用詳情 1、AS創建Flutter項目 2、cmd執行命令 生成一個sunluyi.jks的文件&#xff0c;可以自行把sunluyi替…

【服務器學習專欄 1.2 -- 帶外管理】

請閱讀 嵌入式學習必備專欄 文章目錄 Overview服務器帶外管理BMC 介紹BMC 特點BMC 工作原理 Overview 從技術的角度&#xff0c;網絡管理可分為帶外管理&#xff08;out-of-band&#xff09;和帶內管理&#xff08;in-band&#xff09;兩種管理模式。 帶內管理&#xff0c;是指…