成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用JavaScript訪問設備攝像頭(前后)

開發 前端
在這篇文章中,我將向您展示如何通過JavaScript在網頁上訪問設備的攝像頭,并支持多種瀏覽器,而無需外部庫。

 [[328910]]

在這篇文章中,我將向您展示如何通過JavaScript在網頁上訪問設備的攝像頭,并支持多種瀏覽器,而無需外部庫。

 

如何使用JavaScript訪問設備攝像頭(前后)

如何使用相機

要訪問用戶的相機(或麥克風),我們使用JavaScript MediaStream API。該API允許通過流訪問這些設備捕獲的視頻和音頻。

第一步是檢查瀏覽器是否支持此API:

 

  1. if ( 
  2.   "mediaDevices" in navigator && 
  3.   "getUserMedia" in navigator.mediaDevices 
  4. ) { 
  5.   // ok, 瀏覽器支持它 

在現代瀏覽器中,支持是不錯的(當然沒有Internet Explorer)。

捕獲視頻流

要捕獲由攝像機生成的視頻流,我們使用 mediaDevices 對象的 getUserMedia 方法。這個方法接收一個對象,其中包含我們要請求的媒體類型(視頻或音頻)和一些要求。首先,我們可以通過 {video: true} 來獲取攝像機的視頻。

 

  1. const videoStream = await navigator.mediaDevices.getUserMedia({ video: true }); 

此調用將詢問用戶是否允許訪問攝像機。如果用戶拒絕,它將引發異常并且不返回流。因此,必須在 try/catch 塊內完成處理這種情況。

 

如何使用JavaScript訪問設備攝像頭(前后)

 

請注意,它返回一個Promise,因此您必須使用 async/await 或 then 塊。在Mac OS系統上還會彈出授權。

 

如何使用JavaScript訪問設備攝像頭(前后)

 

沒錯,我使用的是Mac版的Edge瀏覽器

點擊“好”,就可以訪問電腦攝像頭了,控制臺輸出的 videoStream 對象如下

 

如何使用JavaScript訪問設備攝像頭(前后)

 

視頻規格(requirements)

我們可以通過傳遞有關所需分辨率以及最小和最大限制的信息來改善視頻的要求:

 

  1. const constraints = { 
  2.   video: { 
  3.     width: { 
  4.       min: 1280, 
  5.       ideal: 1920, 
  6.       max: 2560, 
  7.     }, 
  8.     height: { 
  9.       min: 720, 
  10.       ideal: 1080, 
  11.       max: 1440, 
  12.     }, 
  13.   }, 
  14. }; 
  15.  
  16. const videoStream = await navigator.mediaDevices.getUserMedia(constraints); 

這樣,流以正確的寬度和高度比例進入,如果它是處于縱向模式的手機,則需要進行尺寸反轉。

在頁面上顯示視頻

既然有了流,我們該如何處理?

我們可以在頁面上的 video 元素中顯示視頻:

  1. // 頁面中有一個 <video autoplay id="video"></video> 標簽 
  2. const video = document.querySelector("#video"); 
  3. const videoStream = await navigator.mediaDevices.getUserMedia(constraints); 
  4. video.srcObject = videoStream; 

請注意 video 標簽中的自動播放屬性 autoplay,沒有它,你需要調用 video.play() 才能真正開始顯示圖像。

 

如何使用JavaScript訪問設備攝像頭(前后)

 

訪問手機的前后攝像頭

默認情況下,getUserMedia 將使用系統默認的視頻錄制設備。如果是有兩個攝像頭的手機,它使用前置攝像頭。

要訪問后置攝像頭,我們必須在視頻規格中包括 faceModeMode:"environment":

 

  1. const constraints = { 
  2.   video: { 
  3.     width: { ... }, 
  4.     height: { ... }, 
  5.     facingMode: "environment" 
  6.   }, 
  7. }; 

默認值為 faceingMode:"user",即前置攝像頭。

需要注意的是,如果你想在已經播放視頻的情況下更換攝像機,你需要先停止當前的視頻流,然后再將其替換成另一臺攝像機的視頻流。

 

  1. videoStream.getTracks().forEach((track) => { 
  2.   track.stop(); 
  3. }); 

截屏

你可以做的另一件很酷的事情是捕獲視頻的圖像(屏幕快照)。

你可以在canvas上繪制當前視頻幀,例如:

  1. // 頁面中有一個 <canvas id="canvas"></canvas> 標簽 
  2. const canvas = document.querySelector("#canvas"); 
  3. canvas.width = video.videoWidth; 
  4. canvas.height = video.videoHeight; 
  5. canvas.getContext("2d").drawImage(video, 0, 0); 

你還可以在 img 元素中顯示畫布內容。

在本教程創建的示例中,我添加了一個按鈕,該按鈕可從畫布動態創建圖像并將其添加到頁面:

 

  1. const img = document.createElement("img"); 
  2. img.src = canvas.toDataURL("image/png"); 
  3. screenshotsContainer.prepend(img); 

完整代碼

在線效果及源代碼,源代碼并不多,很簡單,相信只要有點Javascript基礎都能看懂。需要的請復制下面的鏈接,或私信關鍵字:攝像頭。

 

如何使用JavaScript訪問設備攝像頭(前后)

 

https://coding.zhangbing.site/view.html?url=./list/camera-api/index.html

手機QQ中瀏覽效果

 

如何使用JavaScript訪問設備攝像頭(前后)

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2011-09-08 13:53:20

Linux攝像頭

2021-03-11 10:21:55

特斯拉黑客網絡攻擊

2013-03-21 09:56:09

2023-03-22 09:05:48

Linux舊相機網絡攝像頭

2018-06-20 11:54:54

2014-07-16 13:36:30

MotionLinux監控

2011-12-19 16:09:32

PhoneGap APCamera

2016-02-22 10:30:38

AngularJSHTML5攝像頭

2017-06-20 11:45:52

2024-11-29 16:51:18

2011-04-25 09:16:10

Windows 8

2012-06-23 20:13:44

HTML5

2023-03-24 10:28:27

2018-06-22 10:34:46

Linux樹莓派數字針孔攝像頭

2009-06-17 11:52:01

Linux

2009-08-21 17:24:18

C#控制攝像頭

2022-05-12 09:25:19

Python播放視頻攝像頭

2023-01-13 08:00:00

人工智能攝像頭人臉識別

2012-05-03 08:08:34

Linux攝像頭

2022-08-17 15:42:44

Windows 11Android 手機攝像頭
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人a亚洲精品 | 一级毛片网 | 国产情侣啪啪 | 欧美日本久久 | 久久这里只有 | 精品一区二区三区四区五区 | 国内毛片毛片毛片毛片 | 日本欧美视频 | 欧美一区二区三区的 | 国产精品99久久久久 | www.色综合 | 日韩欧美三级 | 一区二区三区视频 | 免费在线观看91 | 国产一区在线看 | 在线午夜| 日韩一区精品 | 欧美精品在线播放 | 国产欧美日韩一区二区三区在线观看 | 成人亚洲| 日韩在线小视频 | 午夜精品视频在线观看 | 亚洲成人精品 | 日韩av黄色 | 日韩不卡一区二区三区 | 亚洲国产精品一区二区三区 | 国产日韩欧美在线观看 | 久久久久久久久国产 | 一区二区手机在线 | 成人免费三级电影 | 国产yw851.c免费观看网站 | 亚洲激情一区二区 | 日日草夜夜草 | 九九热在线观看视频 | 亚洲毛片在线观看 | 亚洲福利在线观看 | 欧美中国少妇xxx性高请视频 | 岛国av免费在线观看 | 精品久久久久香蕉网 | 毛片网站免费观看 | 日韩亚洲欧美一区 |