摘要:能夠前后攝像頭切換,能夠截取當(dāng)前視頻流圖像兼容各大主流瀏覽器,主要使用的獲取視頻流獲取設(shè)備攝像信息之前在本機(jī)上測試出現(xiàn)問題,問題在于沒有使用作為測試鏈接,如果使用的話,則項(xiàng)目不能打開攝像頭,這可能與的明文加密有關(guān)系如果使用,代碼會(huì)報(bào)但是這個(gè)
能夠前后攝像頭切換,能夠截取當(dāng)前視頻流圖像
兼容各大主流瀏覽器,
主要使用的api:
// 獲取視頻流 navigator.mediaDevices.getUserMedia(constrains).then(success).catch(error); // 獲取設(shè)備攝像信息 navigator.mediaDevices.enumerateDevices().then(gotDevices).then(getStream).catch(handleError);
之前在本機(jī)上測試Chrome出現(xiàn)問題,問題在于沒有使用https作為測試鏈接,如果使用http的話,則項(xiàng)目不能打開攝像頭,這可能與chrome的明文加密有關(guān)系
如果使用http,代碼會(huì)報(bào)
NotSupportedError Only secure origins are allowed (see: https://goo.gl/Y0ZkNV)
但是這個(gè)錯(cuò)開始并沒有報(bào),開始我直接運(yùn)行獲取視頻流代碼,項(xiàng)目的代碼仿佛停止運(yùn)行一般,相應(yīng)位置的console.log也沒有輸出,這個(gè)錯(cuò)誤也沒有報(bào)
后來經(jīng)過調(diào)試,獲取視頻流的代碼放在點(diǎn)擊事件中,錯(cuò)誤才出來。。
// 多選框更改事件 videoSelect.onchange = getStream; // 獲取設(shè)備音頻輸出設(shè)備與攝像設(shè)備,這里我只用到了攝像設(shè)備 function gotDevices(deviceInfos) { console.log("deviceInfos") console.log("deviceInfos:", deviceInfos); for (let i = 0; i !== deviceInfos.length; i++) { let deviceInfo = deviceInfos[i]; var option = document.createElement("option"); // console.log(deviceInfo) if (deviceInfo.kind === "videoinput") { // audiooutput , videoinput option.value = deviceInfo.deviceId; option.text = deviceInfo.label || "camera " + (videoSelect.length + 1); videoSelect.appendChild(option); } } }兼容瀏覽器:
//訪問用戶媒體設(shè)備的兼容方法 function getUserMedia(constrains,success,error){ if(navigator.mediaDevices.getUserMedia){ //最新標(biāo)準(zhǔn)API navigator.mediaDevices.getUserMedia(constrains).then(success).catch(error); } else if (navigator.webkitGetUserMedia){ //webkit內(nèi)核瀏覽器 navigator.webkitGetUserMedia(constrains).then(success).catch(error); } else if (navigator.mozGetUserMedia){ //Firefox瀏覽器 navagator.mozGetUserMedia(constrains).then(success).catch(error); } else if (navigator.getUserMedia){ //舊版API navigator.getUserMedia(constrains).then(success).catch(error); } }獲取視頻流成功回調(diào):
function getStream(){ if (window.stream) { window.stream.getTracks().forEach(function(track) { track.stop(); }) } if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia){ //調(diào)用用戶媒體設(shè)備,訪問攝像頭 const constraints = { audio: true, video: { width: { ideal: 1280 }, height: { ideal: 720 }, frameRate: { ideal: 10, max: 15 }, deviceId: {exact: videoSelect.value} } }; console.log("獲取視頻流"); getUserMedia(constraints,success,error); } else { alert("你的瀏覽器不支持訪問用戶媒體設(shè)備"); } }截取視頻流作為圖片:
//注冊拍照按鈕的單擊事件 document.getElementById("capture").addEventListener("click",function(){ //繪制畫面 console.log("點(diǎn)擊事件"); context.drawImage(video,0,0,480,320); });
源碼地址
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98482.html
摘要:手機(jī)屏幕朝上,水平靜止放置,軸重力加速度為,為。當(dāng)手機(jī)水平放置,撥動(dòng)手機(jī),使其慢慢旋轉(zhuǎn),重力加速度的數(shù)據(jù)并沒有變化。四元數(shù)的基本數(shù)學(xué)方程為其中表示旋轉(zhuǎn)角度,表示旋轉(zhuǎn)軸。四元數(shù)表示一個(gè)完整的旋轉(zhuǎn)。 前言 隨著智能硬件的普及,手機(jī),平板,PC甚至路邊的電子廣告牌,現(xiàn)代瀏覽器已經(jīng)無處不在。在瀏覽器里編織出我們自己的一片天地已經(jīng)輕車熟路,但是這還不夠,H5賦予了瀏覽器太多的新特性,等待我們?nèi)ナ?..
摘要:在微信端打開手機(jī)攝像頭拍照,將拍照圖片保存到服務(wù)器上需要使用到微信的接口,主要使用到了拍照或從手機(jī)相冊中選圖接口上傳圖片接口參考資料一引入微信二通過接口注入權(quán)限驗(yàn)證配置三微信端拍照接口默認(rèn)可以指定是原圖還是壓縮圖,默認(rèn)二者都有可以指 在微信端打開手機(jī)攝像頭拍照,將拍照圖片保存到服務(wù)器上需要使用到微信的JSSDK接口,主要使用到了拍照或從手機(jī)相冊中選圖接口(chooseImage),上傳...
閱讀 1726·2021-11-22 15:33
閱讀 2102·2021-10-08 10:04
閱讀 3555·2021-08-27 13:12
閱讀 3429·2019-08-30 13:06
閱讀 1477·2019-08-29 16:43
閱讀 1400·2019-08-29 16:40
閱讀 795·2019-08-29 16:15
閱讀 2752·2019-08-29 14:13