午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > html5調用攝像頭功能的實現代碼

html5調用攝像頭功能的實現代碼

熱門標簽:濟南辦理400電話 鄭州電銷外呼系統違法嗎 威海營銷外呼系統招商 農村住宅地圖標注 鶴壁手機自動外呼系統怎么安裝 漳州人工外呼系統排名 ai電銷機器人連接網關 中紳電銷智能機器人 跟電銷機器人做同事

前言

前些天,線上筆試的時候,發現需要瀏覽器同意開啟攝像頭,感覺像是 js 調用的,由于當時筆試,也就沒想到這么多問題。今天閑來無事,看了下自己的 todo,發現有這個調用攝像頭的todo,才想到😂。網上查了一下,果然 js 有調用攝像頭的 api,為此自己寫一個 demo ,避免忘記。

正文

調用攝像頭

一共有兩種實現方式,一種是使用navigator.getUserMedia(該特性已經從 Web 標準中刪除,雖然一些瀏覽器目前仍然支持它,但也許會在未來的某個時間停止支持,請盡量不要使用該特性),前面一種已經從 Web 標準中刪除,僅為了向后兼容而存在,第二種是使用navigator.mediaDevices.getUserMedia(推薦使用),這兩種方法 Safari 貌似都不支持。。。。

第一種方法navigator.getUserMedia用法詳見mdn ,代碼如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>攝像頭調用1</title>
</head>
<body>
    <video id="v"></video>
    <script>
        !(function () {
            function userMedia() {
                return navigator.getUserMedia = navigator.getUserMedia ||
                    navigator.webkitGetUserMedia ||
                    navigator.mozGetUserMedia ||
                    navigator.msGetUserMedia || null;
            }
            if (userMedia()) {
                var constraints = {
                    video: true,
                    audio: false
                };
                var media = navigator.getUserMedia(constraints, function (stream) {
                    var v = document.getElementById('v');
                    var url = window.URL || window.webkitURL;
                    v.src = url ? url.createObjectURL(stream) : stream;
                    v.play();
                }, function (error) {
                    console.log("ERROR");
                    console.log(error);
                });
            } else {
                console.log("不支持");
            }
        })();
    </script>
</body>
</html>

第二種方法navigator.mediaDevices.getUserMedia用法詳見mdn。navigator.mediaDevices.getUserMedia 其實和第一種差不多,主要第二種返回是一個 Promise 對象,代碼如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>攝像頭調用2</title>
</head>
<body>
    <video id="v"></video>
    <script>
        !(function () {
            // 老的瀏覽器可能根本沒有實現 mediaDevices,所以我們可以先設置一個空的對象
            if (navigator.mediaDevices === undefined) {
                navigator.mediaDevices = {};
            }
            if (navigator.mediaDevices.getUserMedia === undefined) {
                navigator.mediaDevices.getUserMedia = function (constraints) {
                    // 首先,如果有getUserMedia的話,就獲得它
                    var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

                    // 一些瀏覽器根本沒實現它 - 那么就返回一個error到promise的reject來保持一個統一的接口
                    if (!getUserMedia) {
                        return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
                    }

                    // 否則,為老的navigator.getUserMedia方法包裹一個Promise
                    return new Promise(function (resolve, reject) {
                        getUserMedia.call(navigator, constraints, resolve, reject);
                    });
                }
            }
            const constraints = {
                video: true,
                audio: false
            };
            let promise = navigator.mediaDevices.getUserMedia(constraints);
            promise.then(stream => {
                let v = document.getElementById('v');
                // 舊的瀏覽器可能沒有srcObject
                if ("srcObject" in v) {
                    v.srcObject = stream;
                } else {
                    // 防止再新的瀏覽器里使用它,應為它已經不再支持了
                    v.src = window.URL.createObjectURL(stream);
                }
                v.onloadedmetadata = function (e) {
                    v.play();
                };
            }).catch(err => {
                console.error(err.name + ": " + err.message);
            })
        })();
    </script>
</body>
</html>

拍照

思路是設置一個標志變量 videoPlaying 看看是否 video 有在 play,監聽拍照按鈕的點擊事件,如果videoPlaying 為 true ,使用一個canvas 獲取 video 的寬高(默認 canvas 是不顯示的),然后使用 canvas 的drawImage,然后使用 canvas 的 toDataURL返回一個 data url,將這個 url,設置在一個 img 標簽上即可😀

第一種方法navigator.getUserMedia實現代碼:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>拍照1</title>
</head>
<body>
    <button id="take">拍照</button>
    <br />
    <video id="v" style="width: 640px;height: 480px;"></video>
    <canvas id="canvas" style="display:none;"></canvas>
    <br />
    <img src="http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo">
    <script>
        !(function () {
            function userMedia() {
                return navigator.getUserMedia = navigator.getUserMedia ||
                    navigator.webkitGetUserMedia ||
                    navigator.mozGetUserMedia ||
                    navigator.msGetUserMedia || null;
            }
            if (userMedia()) {
                let videoPlaying = false;
                let constraints = {
                    video: true,
                    audio: false
                };
                let video = document.getElementById('v');
                let media = navigator.getUserMedia(constraints, function (stream) {
                    let url = window.URL || window.webkitURL;
                    video.src = url ? url.createObjectURL(stream) : stream;
                    video.play();
                    videoPlaying = true;
                }, function (error) {
                    console.log("ERROR");
                    console.log(error);
                });
                document.getElementById('take').addEventListener('click', function () {
                    if (videoPlaying) {
                        let canvas = document.getElementById('canvas');
                        canvas.width = video.videoWidth;
                        canvas.height = video.videoHeight;
                        canvas.getContext('2d').drawImage(video, 0, 0);
                        let data = canvas.toDataURL('image/webp');
                        document.getElementById('photo').setAttribute('src', data);
                    }
                }, false);
            } else {
                console.log("不支持");
            }
        })();
    </script>
</body>
</html>

第二種navigator.mediaDevices.getUserMedia實現方法:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>拍照2</title>
</head>

<body>
    <button id="take">拍照</button>
    <br />
    <video id="v" style="width: 640px;height: 480px;"></video>
    <canvas id="canvas" style="display:none;"></canvas>
    <br />
    <img src="http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo">
    <script>
        !(function () {
            // 老的瀏覽器可能根本沒有實現 mediaDevices,所以我們可以先設置一個空的對象
            if (navigator.mediaDevices === undefined) {
                navigator.mediaDevices = {};
            }
            if (navigator.mediaDevices.getUserMedia === undefined) {
                navigator.mediaDevices.getUserMedia = function (constraints) {
                    // 首先,如果有getUserMedia的話,就獲得它
                    var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

                    // 一些瀏覽器根本沒實現它 - 那么就返回一個error到promise的reject來保持一個統一的接口
                    if (!getUserMedia) {
                        return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
                    }

                    // 否則,為老的navigator.getUserMedia方法包裹一個Promise
                    return new Promise(function (resolve, reject) {
                        getUserMedia.call(navigator, constraints, resolve, reject);
                    });
                }
            }
            const constraints = {
                video: true,
                audio: false
            };
            let videoPlaying = false;
            let v = document.getElementById('v');
            let promise = navigator.mediaDevices.getUserMedia(constraints);
            promise.then(stream => {
                // 舊的瀏覽器可能沒有srcObject
                if ("srcObject" in v) {
                    v.srcObject = stream;
                } else {
                    // 防止再新的瀏覽器里使用它,應為它已經不再支持了
                    v.src = window.URL.createObjectURL(stream);
                }
                v.onloadedmetadata = function (e) {
                    v.play();
                    videoPlaying = true;
                };
            }).catch(err => {
                console.error(err.name + ": " + err.message);
            })
            document.getElementById('take').addEventListener('click', function () {
                if (videoPlaying) {
                    let canvas = document.getElementById('canvas');
                    canvas.width = v.videoWidth;
                    canvas.height = v.videoHeight;
                    canvas.getContext('2d').drawImage(v, 0, 0);
                    let data = canvas.toDataURL('image/webp');
                    document.getElementById('photo').setAttribute('src', data);
                }
            }, false);
        })();
    </script>
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:紅河 咸陽 惠州 文山 萍鄉 甘南 營口 蘇州

巨人網絡通訊聲明:本文標題《html5調用攝像頭功能的實現代碼》,本文關鍵詞  html5,調用,攝像頭,功能,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《html5調用攝像頭功能的實現代碼》相關的同類信息!
  • 本頁收集關于html5調用攝像頭功能的實現代碼的相關信息資訊供網民參考!
  • 推薦文章
    国产免费av电影| 日韩亚洲成人av在线| 欧洲精品在线观看| 一级在线观看视频| 看一级黄色录像| 久久国产精品-国产精品| 91免费欧美精品| 欧美在线视频网站| 97欧美精品一区二区三区| 久久视频在线视频| 日韩在线观看视频免费| 中文字幕久久亚洲| 亚洲视频日韩精品| 国产亚洲免费的视频看| 亚洲人午夜精品免费| 国产丝袜精品第一页| 日韩精品高清在线| 亚洲欧美日本另类| 在线播放亚洲激情| 在线日韩第一页| 国产亚洲美女久久| 成人性视频免费网站| 在线观看日本视频| 久久免费视频99| 久久免费少妇高潮99精品| 日本熟女一区二区| 精品成人av一区二区在线播放| 日韩精品视频免费看| 800av免费在线观看| 国产精品久久久久久人| 最近中文字幕免费观看| 一区二区三区免费在线视频| 国产成人精品a视频| 丰满人妻熟女aⅴ一区| 人妻无码中文字幕免费视频蜜桃| 丝瓜av网站精品一区二区| 日韩高清中文字幕一区| 久久国产精品色| 国产精品影视天天线| 成人精品一区二区三区四区| 久久久久亚洲蜜桃| 国产午夜精品一区二区| 亚洲综合视频网站| 一级黄色片在线免费观看| 亚洲男人天堂2021| 国产视频精品视频| 加勒比综合在线| 永久免费未视频| 国产一级特黄视频| av手机天堂网| 午夜久久久久久久久久| 老**午夜毛片一区二区三区| 六月婷婷色综合| youjizz国产精品| 国产精品久久看| 黄色精品一区二区| 欧美群妇大交群中文字幕| 欧美精品一区二区在线播放| 在线观看不卡av| 久久久免费观看| 91精品久久久久久综合乱菊| 久久精品magnetxturnbtih| 欧美一区二区三区精美影视| 色哺乳xxxxhd奶水米仓惠香| 国产福利视频在线播放| 亚洲黄色小说在线观看| 日韩免费成人av| 久一区二区三区| 一级特黄aa大片| 久久精品卡一| gogo大胆日本视频一区| 中文字幕亚洲欧美在线不卡| 狠狠躁18三区二区一区| 欧美大片在线观看一区二区| 日韩中文第一页| 青草热久免费精品视频| 亚洲xxxx做受欧美| 色就是色欧美| 97国产在线播放| 中文字幕一二三区| 97精品在线播放| 最近中文字幕av| 免费成人小视频| 国产亚洲欧洲一区高清在线观看| 五月婷婷久久丁香| 欧美变态tickle挠乳网站| 日韩中文字幕精品视频| 国产精品国产三级国产专播精品人 | 色偷偷9999www| 欧美与黑人午夜性猛交久久久| 成人一区二区三区四区| 99re99热| 久久久精品高清| 四虎影视1304t| 亚洲一区在线观| 精品亚洲成av人在线观看| 国产精品人成在线观看免费 | 99re8这里只有精品| jizzzz日本| 黑人狂躁日本娇小| 国产麻豆一精品一男同| 国产做a爰片久久毛片| 成人免费在线视频| 91麻豆精品国产自产在线观看一区 | 国产亚洲成人av| 亚洲av无码乱码国产精品久久| 粉嫩高潮美女一区二区三区| 亚洲国产精品自拍| 日韩av中文字幕在线播放| 国内久久久精品| 久久精品美女| 国产 porn| 欧美肥妇bbwbbw| 亚洲国产精品国自产拍久久| 99久久精品一区二区| 欧美性猛交xxxx黑人| 国产亚洲视频在线观看| 国产在线视频91| 一二三四中文字幕| 精品一区二区视频在线观看| 久久青青草原亚洲av无码麻豆 | 波多野结衣国产| 免费人成黄页网站在线一区二区| 日韩一区欧美小说| 精品国产1区2区3区| 欧美专区中文字幕| 在线视频91| 亚洲一区二区三区四区av| 日本一区二区三区精品| 激情综合网最新| 亚洲成a人v欧美综合天堂| 亚洲免费视频一区二区| 国产玖玖精品视频| 日本精品福利视频| 国产人妻人伦精品1国产丝袜| 艳妇乳肉豪妇荡乳av无码福利 | 99国产成人精品| 久久久久久免费| 91精品国产综合久久久久久| 4p变态网欧美系列| 伊人狠狠色丁香综合尤物| 精品无码av一区二区三区不卡| 99久热在线精品996热是什么| 久久成人综合网| 精品国产成人av| 日韩在线观看免费| 久久精品中文字幕一区二区三区 | 亚洲国产精品悠悠久久琪琪| 国产精品亚洲精品| 国产精品999视频| 91香蕉视频网| 日本vs亚洲vs韩国一区三区 | 免费观看av网站| 国产按摩一区二区三区| 国产欧美一区二区三区在线老狼| 欧美电视剧在线看免费| 国产区精品视频| 成年人免费在线播放| 久久久久性色av无码一区二区| 美女网站一区二区| 日韩欧美aⅴ综合网站发布| 欧美成人精品在线视频| 日韩性感在线| 国产免费看av| 人妻无码中文字幕免费视频蜜桃| 成人免费在线视频观看| 中文字幕精品—区二区| 欧美成熟毛茸茸复古| 亚洲av无码专区在线播放中文| 92久久精品一区二区| 国产精品女同一区二区三区| 亚洲欧美另类国产| 鲁丝一区二区三区免费| 2一3sex性hd| www.久久久久久久久久| 亚洲免费观看高清完整版在线观看 | 91.麻豆视频| 国产精品成人久久久久| 欧美亚洲另类色图| 亚洲国产综合久久| av福利精品导航| 精品福利视频一区二区三区| 成人在线免费观看一区| 野花视频免费在线观看| av中文字幕观看| 艳妇臀荡乳欲伦亚洲一区| 美女av一区二区三区 | 国产精品久久久久久久久免费| 97av视频在线观看| 国产农村妇女aaaaa视频| 久久品道一品道久久精品| 亚洲精品网址在线观看| 欧美日本韩国国产| 国产精品亚洲无码| 久久亚洲一区| 欧美写真视频网站| 国产精品视频99| 成年人三级黄色片| 国产视频手机在线观看| 亚洲国产一区视频| 97色在线观看免费视频| 欧美亚洲一二三区| 无码人妻一区二区三区免费| 国产精品久久久久久久久久久免费看| xxxx性欧美| av 日韩 人妻 黑人 综合 无码| 精品无码人妻一区二区三| 2020国产精品自拍| 一区二区国产精品视频| 国产卡一卡二在线| 日本少妇xxxx动漫| 国产婷婷一区二区| 久久久av电影| 精品国产一区三区| 日本一区二区三区久久| 亚洲精品日日夜夜| 55夜色66夜色国产精品视频| 三级在线免费看| 亚洲第一成年人网站| 91久久精品一区二区| 亚洲999一在线观看www| 国产毛片毛片毛片毛片毛片毛片| 麻豆精品视频在线观看| 精品国产91乱码一区二区三区| 日韩av电影免费观看| 欧美黄色免费看| 国产欧美日韩精品一区| 欧美老女人在线视频| 久久久久久久久久久久久国产精品| 国产精品永久久久久久久久久| 欧美视频专区一二在线观看| 91香蕉国产在线观看| 久久久久亚洲av无码专区桃色| 国产精品亚洲一区二区三区妖精| 亚洲免费电影一区| 奇米777四色影视在线看| 精品人妻一区二区三区潮喷在线 | 日韩精品电影一区二区| 福利一区二区在线| 国产一区二区三区毛片| 日韩一级免费看| 欧美在线视频精品| 欧美日韩日本国产| 亚洲精品免费在线视频| 黄色aaa视频| av综合在线播放| 久久精品中文字幕电影| 国产精品亚洲a| 免费a视频在线观看| 欧美一区日韩一区| 三区精品视频| 青青草免费观看视频| 亚洲国产中文字幕| 亚洲综合在线做性| 日本在线观看网址| 日本一区二区视频在线| 欧美亚洲国产日韩2020| 女同性αv亚洲女同志| 国产真实乱子伦精品视频| 国产亚洲激情视频在线| 日本熟妇人妻xxxxx| 污污网站免费在线观看| 亚洲国产第一页| 青青青在线观看视频| 国产精品毛片一区视频播| 在线观看亚洲专区| 欧美日韩一区在线观看视频| 国产特黄大片aaaa毛片| 五月天亚洲婷婷| 国产经品一区二区| 久久婷婷国产麻豆91| 亚洲一区二区在线免费看| 亚洲字幕一区二区| 黄色录像二级片| 亚洲男人的天堂av| 成人午夜在线观看| 日韩一区二区三区四区视频| 国产精品久久久久久久浪潮网站| 国产精品久在线观看| 99国产精品免费| 国产精品高潮久久久久无| 国产欧美精品日韩| 欧美美女性生活视频| 亚洲欧美偷拍卡通变态| 亚洲一区二区三区成人在线视频精品| 国产美女高潮视频| 亚洲蜜臀av乱码久久精品| 成人国产精品久久久| 97在线观看视频免费| 亚洲欧洲三级电影| 97久久天天综合色天天综合色hd| 九九九在线视频| 午夜久久久久久久久| 欧美韩国日本精品一区二区三区| 波多野结衣不卡| 69堂成人精品免费视频| 免费极品av一视觉盛宴| 视频污在线观看| 国产一区二区三区在线观看视频 | 日本aⅴ大伊香蕉精品视频| 亚洲精品国产91| 亚洲丝袜自拍清纯另类| 国产精品美女xx| 亚洲av中文无码乱人伦在线视色| 91传媒视频免费| 久久久久亚洲AV成人网人人小说| 国产亚洲精品高潮| 亚洲丁香久久久| 欧美在线你懂得| 亚洲一级电影视频| 国产成人精品免费| 人妻va精品va欧美va| 中文字幕一区二区三区波野结 | 日韩欧美国产高清| 7777精品伊人久久久大香线蕉完整版 | 一区二区三区在线视频观看58| 国产视频在线观看一区二区三区| 欧美激情一区二区三区不卡| 91精品欧美久久久久久动漫| 久久久精品一区| 国产日本欧美一区二区三区在线| 欧美日韩国产精品一区二区| www.欧美日本| 中文字幕在线观看免费高清| 亚洲天堂av片| 精品久久久久成人码免费动漫| 日日摸夜夜添夜夜添精品视频| 免费av成人在线| 国产一区二区三区免费观看| 久久久久久毛片| 久久综合给合久久狠狠狠97色69| 黄色成人av网| 91精品欧美久久久久久动漫| 一个色综合导航| 97精品视频在线| 日韩在线观看你懂的| 九九久久久久久久久激情| 97超级碰碰人国产在线观看| 欧美自拍视频在线| 国产91一区二区三区| 美女日批免费视频| 一级黄色片大全| 五月天色婷婷丁香| 欧美人妻精品一区二区三区| 中文字幕91爱爱| 久久精品国产99国产精品| 久久精品欧美一区二区三区不卡 | 少妇人妻一区二区| 国产欧美一区二区精品忘忧草| 日韩欧美激情四射| 国产精品av电影| 国产精品videossex国产高清 | 国产日韩在线一区| av免费播放网址| 久久久久久久久久99| 奇米在线7777在线精品 | 伊人色综合久久天天| 91精品国产免费久久综合| 亚洲第一天堂av| 欧美成人黄色小视频| 麻豆av一区二区三区| 成人免费性视频| 娇妻高潮浓精白浆xxⅹ| 在线看成人av| 中文字幕在线观看第二页| 黑人精品一区二区三区| 国产一区二区在线视频| 国产精品情趣视频| 日韩精品极品视频免费观看| 92裸体在线视频网站| 国产资源中文字幕| 日产欧产va高清| 中文字幕日韩第一页| 琪琪一区二区三区| 亚洲日本护士毛茸茸| 中文字幕在线观看第二页| 免费人成在线观看| 天天操天天摸天天干| 免费观看久久久4p| 一区二区三区欧美| 欧美va亚洲va香蕉在线| 综合国产在线观看| 亚洲高清资源综合久久精品| 亚洲最大成人网站| 日韩综合小视频| 精品视频在线免费看| 99re视频在线| 欧美黄色高清视频| 美女视频网站黄色亚洲| 色美美综合视频| 日韩美女毛茸茸| 男人添女人下面免费视频| 亚洲自拍偷拍另类| 国产一区二区三区av电影| 疯狂蹂躏欧美一区二区精品| 韩国v欧美v日本v亚洲| 91精品在线看| 99热这里只有精品2| 在线免费一级片| 东方aⅴ免费观看久久av| 欧美一区二区在线观看| 91精品视频在线免费观看| 欧美成人高潮一二区在线看| 亚洲一级黄色录像| 国产精品无码久久av| 国产精品久久久久天堂| 最近中文字幕日韩精品| 黄色三级中文字幕| 日本中文字幕在线观看视频| 最新热久久免费视频|