最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

demo的效果請看:攝像頭截圖

API兼容性

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

硬件的獲取

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

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

調(diào)用攝像頭

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

getUserMedia的參數(shù)設(shè)置比較復(fù)雜,具體可參考MDN里面的文檔 getUserMedia,我這里設(shè)置的是對應(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,這個api不僅支持把canvas對象和image對象渲染進(jìn)畫布,同時還支持video對象,這就完美解決了我們的需求,核心代碼如下:

//寫入畫布,并轉(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í),模式識別,大把的應(yīng)用場景。

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

相關(guān)文章

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

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

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

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

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

最新評論

寻甸| 兴山县| 厦门市| 澜沧| 南靖县| 和硕县| 泰安市| 尉氏县| 红河县| 连南| 务川| 东光县| 黑龙江省| 吉林省| 天柱县| 三穗县| 西吉县| 永仁县| 方正县| 苏尼特左旗| 西昌市| 萍乡市| 苏尼特左旗| 南华县| 邹城市| 颍上县| 金门县| 香格里拉县| 名山县| 柳林县| 石门县| 丰宁| 贡觉县| 饶河县| 玉林市| 旌德县| 通江县| 航空| 抚顺市| 通城县| 蒲城县|