js實(shí)現(xiàn)web調(diào)用攝像頭 js截取視頻畫面
本文實(shí)例為大家分享了JS實(shí)現(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); } // 正式啟動(dòng)攝像頭 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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用classList來實(shí)現(xiàn)兩個(gè)按鈕樣式的切換方法
下面小編就為大家分享一篇使用classList來實(shí)現(xiàn)兩個(gè)按鈕樣式的切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01JavaScript 無縫上下左右滾動(dòng)加定高定寬停頓效果(兼容ie/ff)
JavaScript 指定寬度高度的無間斷滾動(dòng)實(shí)現(xiàn)代碼,這樣的效果適合作為焦點(diǎn)新聞的輪播顯示。2010-03-03動(dòng)態(tài)加載js、css的簡單實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄獎(jiǎng)討B(tài)加載js、css的簡單實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05webpack5?import動(dòng)態(tài)導(dǎo)入實(shí)現(xiàn)按需加載并給文件統(tǒng)一命名的配置方法
這篇文章主要介紹了webpack5?import動(dòng)態(tài)導(dǎo)入實(shí)現(xiàn)按需加載并給文件統(tǒng)一命名的配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11javascript 網(wǎng)頁跳轉(zhuǎn)的方法
昨天練習(xí)的時(shí)候正好要用到跳轉(zhuǎn)代碼,在網(wǎng)上找了一下,覺得下面幾個(gè)不錯(cuò)...整理了一下發(fā)上來...2008-12-12Js 獲取HTML DOM節(jié)點(diǎn)元素的方法小結(jié)
在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁面中某個(gè)元素,然后更新該元素的樣式、內(nèi)容等。2009-04-04H5實(shí)現(xiàn)仿flash效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了H5實(shí)現(xiàn)仿flash效果的實(shí)現(xiàn)代碼的相關(guān)資料,希望通過本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09關(guān)于IE、Firefox、Opera頁面呈現(xiàn)異同 寫腳本很痛苦
關(guān)于IE、Firefox、Opera頁面呈現(xiàn)異同 寫腳本很痛苦,對(duì)于多瀏覽器的兼容性,需要注意。2009-08-08