欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

html5調(diào)用攝像頭截圖功能

  發(fā)布時(shí)間:2021-12-28 16:05:05   作者:Jeff.Zhong   我要評(píng)論
根據(jù)需求我們可以把圖片數(shù)據(jù)轉(zhuǎn)換為流或二進(jìn)制,我這里轉(zhuǎn)換為base64,拿到了數(shù)據(jù)就可以發(fā)揮想象了,tensorflow,機(jī)器學(xué)習(xí),模式識(shí)別,大把的應(yīng)用場(chǎng)景。下面給大家介紹下html5調(diào)用攝像頭截圖功能,感興趣的朋友一起看看吧

關(guān)于html5調(diào)用音視頻等多媒體硬件的API已經(jīng)很成熟,不過(guò)一直找不到機(jī)會(huì)把這些硬件轉(zhuǎn)化為實(shí)際的應(yīng)用場(chǎng)景,不過(guò)近年來(lái)隨著iot和AI的浪潮,我覺(jué)得軟硬結(jié)合的時(shí)機(jī)已經(jīng)成熟。那我們就提前熟悉下怎么操作這些多媒體硬件吧,首先圖像識(shí)別是其中最熱門的應(yīng)用場(chǎng)景,首先實(shí)現(xiàn)調(diào)用攝像頭以及截圖。

demo的效果請(qǐng)看:攝像頭截圖

API兼容性

核心的api就是navigator.MediaDevices,從caniuse可看出,PC端除了IE,已經(jīng)沒(méi)多大問(wèn)題。移動(dòng)端新版本瀏覽器也支持,同時(shí)很多項(xiàng)目都已經(jīng)轉(zhuǎn)向小程序,加上移動(dòng)端一向緊跟最新標(biāo)準(zhǔn),問(wèn)題也不大。接著就是支持度就更好的video標(biāo)簽。最后還有canvas,支持度就更加樂(lè)觀了。

硬件的獲取

使用到的api:enumerateDevices,它返回的是一個(gè)promise,結(jié)果就是設(shè)備列表。設(shè)備的對(duì)象屬性主要包括 deviceId,groupId,kind。其中deviceId,groupId 是設(shè)備的標(biāo)記,可以通過(guò)這兩個(gè)id調(diào)用所屬的硬件。而kind 顧名思義就是硬件類型了。有了enumerateDevices就可以遍歷硬件,同時(shí)可以實(shí)現(xiàn)選擇對(duì)應(yīng)的硬件并調(diào)用。

//遍歷多媒體硬件
navigator.mediaDevices.enumerateDevices().then(function (devices) {
  console.log(devices);
  /*
  {
    deviceId: ""
    groupId: "8cac2d9a9e5d30a7bfc5a33b9971a3d40a850f7b0f6634b7f41f7dbe1de0a519"
    kind: "audioinput"
    label: ""
  } []
  */
});

調(diào)用攝像頭

接著開始調(diào)用對(duì)應(yīng)的硬件,這里會(huì)使用到另一個(gè)api,getUserMedia,同樣它返回的也是一個(gè)promise,結(jié)果是一個(gè)視頻流。有了視頻流就好辦了,把stream設(shè)置到video的srcObject,馬上一個(gè)視頻監(jiān)控的應(yīng)用就出來(lái)了。

getUserMedia的參數(shù)設(shè)置比較復(fù)雜,具體可參考MDN里面的文檔 getUserMedia,我這里設(shè)置的是對(duì)應(yīng)的攝像頭及視頻的尺寸。loadedmetadata事件在元數(shù)據(jù)(metadata)被加載完成后觸發(fā)視頻播放。

// 調(diào)用攝像頭,并將流導(dǎo)入video
navigator.mediaDevices.getUserMedia({ 
  video: { groupId, width: 800, height: 600 }
}).then(function (stream) {
    video.srcObject = stream;
    mediaTrack = stream.getTracks()[0];
    video.onloadedmetadata = function (e) {
      video.play();
    };
})
.catch(console.log);

視頻的截圖

最后就是截取視頻畫面了,這就用到了canvas的drawImage,這個(gè)api不僅支持把canvas對(duì)象和image對(duì)象渲染進(jìn)畫布,同時(shí)還支持video對(duì)象,這就完美解決了我們的需求,核心代碼如下:

//寫入畫布,并轉(zhuǎn)換為base64
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
const imgURL = canvas.toDataURL('image/jpeg');

根據(jù)需求我們可以把圖片數(shù)據(jù)轉(zhuǎn)換為流或二進(jìn)制,我這里轉(zhuǎn)換為base64,拿到了數(shù)據(jù)就可以發(fā)揮想象了,tensorflow,機(jī)器學(xué)習(xí),模式識(shí)別,大把的應(yīng)用場(chǎng)景。

到此這篇關(guān)于html5調(diào)用攝像頭截圖的文章就介紹到這了,更多相關(guān)html5調(diào)用攝像頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • html5調(diào)用攝像頭實(shí)例代碼

    本文給大家分享html5調(diào)用攝像頭實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)前端html5的學(xué)習(xí)有很大幫助,如果對(duì)html5調(diào)用攝像頭相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-28
  • HTML5通過(guò)navigator.mediaDevices.getUserMedia調(diào)用手機(jī)攝像頭問(wèn)題

    這篇文章主要介紹了HTML5通過(guò)navigator.mediaDevices.getUserMedia調(diào)用手機(jī)攝像頭問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值
    2020-04-27
  • Html5調(diào)用手機(jī)攝像頭并實(shí)現(xiàn)人臉識(shí)別的實(shí)現(xiàn)

    這篇文章主要介紹了Html5調(diào)用手機(jī)攝像頭并實(shí)現(xiàn)人臉識(shí)別的實(shí)現(xiàn),混合App開發(fā),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-21
  • html5調(diào)用攝像頭功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了html5調(diào)用攝像頭功能的實(shí)現(xiàn)代碼的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-07

最新評(píng)論