国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解HTML5 使用video標簽實現選擇攝像頭功能

2019-11-19 15:04:50
字體:
來源:轉載
供稿:網友

詳解HTML5 使用video標簽實現選擇攝像頭功能

1. html

// jquery reference  // <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> //     <input type="hidden" name="imgValue" id="imgValue" />   <button id="btnOpen1" class="btn btn-default" type="button" >Open WebCam</button>   <select id="videoSource" ></select>     <div id="vdoOne" style="display:none">     <video id="video" style="margin-top:15px;margin-bottom:15px;" width="300" autoplay></video>     <canvas id="canvasPreview" style="margin-top:15px;" width="300" height="224"></canvas>     <canvas id="canvasUpload" style="display:none;" width='300' height='224'></canvas>     <button id="snap" class="btn btn-default" type="button">Snap Photo</button>   </div>   

2. javascript

<script>   //// Elements for taking the snapshot     var canvasPreview = document.getElementById('canvasPreview');     var canvasUpload = document.getElementById('canvasUpload');     var contextPreview = canvasPreview.getContext('2d');     var contextUpload = canvasUpload.getContext('2d');         //#################### Video Source #######################3     var videoElement = document.querySelector('video');     var videoSelect = document.querySelector('select#videoSource');       navigator.mediaDevices.enumerateDevices()       .then(gotDevices).then(getStream).catch(handleError);       videoSelect.onchange = getStream;         function gotDevices(deviceInfos) {       for (var i = 0; i < deviceInfos.length; ++i) {         var deviceInfo = deviceInfos[i];         var option = document.createElement('option');         option.value = deviceInfo.deviceId;         if (deviceInfo.kind === 'videoinput') {           option.text = deviceInfo.label ||             'camera ' +             (videoSelect.length + 1);           videoSelect.appendChild(option);         } else {           console.log('Found ome other kind of source/device: ', deviceInfo);         }       }     }       var _streamCopy = null;     function getStream() {       if (_streamCopy != null) {         try {           _streamCopy.stop(); // if this method doesn't exist, the catch will be executed.         } catch (e) {           _streamCopy.getVideoTracks()[0].stop(); // then stop the first video track of the stream         }       }              var constraints = {         audio:false,         video: {           optional: [             {               sourceId: videoSelect.value             }           ]         }       };              navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(handleError);     }       function gotStream(stream) {       _streamCopy = stream; // make stream available to console       videoElement.srcObject = stream;     }       function handleError(error) {       alert(error.name + ": " + error.message);     }       //######################## End Video Source #################         // Get access to the camera!     if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {       navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) {         videoElement.src = window.URL.createObjectURL(stream);         videoElement.play();         });     } else {       document.getElementById("pnlVideo1").style.display = "none";     }         //// Trigger photo take     document.getElementById("snap").addEventListener("click",       function() {         contextPreview.drawImage(videoElement, 0, 0, 300, 224);         contextUpload.drawImage(videoElement, 0, 0, 300, 224);         document.getElementById("video").style.display = "none";         document.getElementById("snap").style.display = "none";         document.getElementById("canvasPreview").style.display = "block";           var image = document.getElementById("canvasUpload").toDataURL("image/jpeg");         image = image.replace('data:image/jpeg;base64,', '');         $("#imgValue").val(image);                  alert("image value :" + image);       });       //// Trigger photo take         document.getElementById("btnOpen1").addEventListener("click",       function() {         document.getElementById("vdoOne").style.display = "block";         document.getElementById("video").style.display = "block";         document.getElementById("snap").style.display = "block";         document.getElementById("canvasPreview").style.display = "none";       });        </script> 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临泽县| 昆山市| 闵行区| 拉萨市| 社会| 甘谷县| 紫金县| 安溪县| 八宿县| 阜新市| 上思县| 商洛市| 中卫市| 纳雍县| 南汇区| 武清区| 武邑县| 迭部县| 浦北县| 张北县| 怀化市| 维西| 达州市| 祥云县| 海兴县| 射阳县| 长治县| 灵丘县| 曲松县| 镇坪县| 壤塘县| 岗巴县| 海丰县| 天镇县| 南江县| 香港| 搜索| 玛多县| 宜昌市| 牙克石市| 澄迈县|