js實現(xiàn)web調(diào)用攝像頭 js截取視頻畫面
更新時間:2019年04月21日 10:24:58 作者:qq_26833853
這篇文章主要為大家詳細(xì)介紹了JS web調(diào)用攝像頭,截取視頻畫面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了JS實現(xiàn)截取視頻畫面的具體代碼,供大家參考,具體內(nèi)容如下
Html
<p> <button onclick="openMedia()">打開</button> <button onclick="closeMedia()">關(guān)閉</button> <button onclick="drawMedia()">截取</button> </p> <video id="video" class="bg"></video> <canvas id="qr-canvas"></canvas>
Javascript
<script type="text/javascript"> var video = document.querySelector('video'); var text = document.getElementById('text'); var canvas1 = document.getElementById('qr-canvas'); var context1 = canvas1.getContext('2d'); var mediaStreamTrack; // 一堆兼容代碼 window.URL = (window.URL || window.webkitURL || window.mozURL || window.msURL); if (navigator.mediaDevices === undefined) { navigator.mediaDevices = {}; } if (navigator.mediaDevices.getUserMedia === undefined) { navigator.mediaDevices.getUserMedia = function(constraints) { var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; if (!getUserMedia) { return Promise.reject(new Error('getUserMedia is not implemented in this browser')); } return new Promise(function(resolve, reject) { getUserMedia.call(navigator, constraints, resolve, reject); }); } } //攝像頭調(diào)用配置 var mediaOpts = { audio: false, video: true, video: { facingMode: "environment"} // 或者 "user" // video: { width: 1280, height: 720 } // video: { facingMode: { exact: "environment" } }// 或者 "user" } // 回調(diào) function successFunc(stream) { mediaStreamTrack = stream; video = document.querySelector('video'); if ("srcObject" in video) { video.srcObject = stream } else { video.src = window.URL && window.URL.createObjectURL(stream) || stream } video.play(); } function errorFunc(err) { alert(err.name); } // 正式啟動攝像頭 function openMedia(){ navigator.mediaDevices.getUserMedia(mediaOpts).then(successFunc).catch(errorFunc); } //關(guān)閉攝像頭 function closeMedia(){ mediaStreamTrack.getVideoTracks().forEach(function (track) { track.stop(); context1.clearRect(0, 0,context1.width, context1.height);//清除畫布 }); } //截取視頻 function drawMedia(){ canvas1.setAttribute("width", video.videoWidth); canvas1.setAttribute("height", video.videoHeight); context1.drawImage(video, 0, 0, video.videoWidth, video.videoHeight); } </script>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用classList來實現(xiàn)兩個按鈕樣式的切換方法
下面小編就為大家分享一篇使用classList來實現(xiàn)兩個按鈕樣式的切換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01JavaScript 無縫上下左右滾動加定高定寬停頓效果(兼容ie/ff)
JavaScript 指定寬度高度的無間斷滾動實現(xiàn)代碼,這樣的效果適合作為焦點新聞的輪播顯示。2010-03-03webpack5?import動態(tài)導(dǎo)入實現(xiàn)按需加載并給文件統(tǒng)一命名的配置方法
這篇文章主要介紹了webpack5?import動態(tài)導(dǎo)入實現(xiàn)按需加載并給文件統(tǒng)一命名的配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11javascript 網(wǎng)頁跳轉(zhuǎn)的方法
昨天練習(xí)的時候正好要用到跳轉(zhuǎn)代碼,在網(wǎng)上找了一下,覺得下面幾個不錯...整理了一下發(fā)上來...2008-12-12Js 獲取HTML DOM節(jié)點元素的方法小結(jié)
在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁面中某個元素,然后更新該元素的樣式、內(nèi)容等。2009-04-04關(guān)于IE、Firefox、Opera頁面呈現(xiàn)異同 寫腳本很痛苦
關(guān)于IE、Firefox、Opera頁面呈現(xiàn)異同 寫腳本很痛苦,對于多瀏覽器的兼容性,需要注意。2009-08-08