HTML5擷取網路攝影機視頻的例子

來源:互聯網
上載者:User

html5新增了很多強大的API,其中可以擷取裝置的網路攝影機視頻是個比較大的亮點,零度從網上找到了一些代碼,進行了整合,搞出來一個html5擷取網路攝影機的例子,大家可以參考一下。

HTML5擷取網路攝影機視頻示範

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
     <title>HTML5擷取網路攝影機視頻示範</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 <!--[if IE]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script><![endif]-->
<style>
*{padding: 0;margin: 0;}
body{padding: 2%;}
video { border: 1px solid #ccc; display: block; margin: 0 0 20px 0; }
canvas { margin-top: 20px; border: 1px solid #ccc; display: block; }
</style>
</head>
<body>
<h1>HTML5擷取網路攝影機視頻示範</h1>
<video id="video" width="100%" height="480" autoplay></video>
<button id="snap" class="sexyButton">截屏</button>
<canvas id="canvas" width="640" height="480"></canvas>
<script>

window.addEventListener("DOMContentLoaded", function() {
 var canvas = document.getElementById("canvas"),
  context = canvas.getContext("2d"),
  video = document.getElementById("video"),
  videoObj = { "video": true },
  errBack = function(error) {
   console.log("視頻擷取失敗: ", error.code);
  };

 if(navigator.getUserMedia) { // Standard
  navigator.getUserMedia(videoObj, function(stream) {
   video.src = stream;
   video.play();
  }, errBack);
 } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
  navigator.webkitGetUserMedia(videoObj, function(stream){
   video.src = window.webkitURL.createObjectURL(stream);
   video.play();
  }, errBack);
 } else if(navigator.mozGetUserMedia) { // WebKit-prefixed
  navigator.mozGetUserMedia(videoObj, function(stream){
   video.src = window.URL.createObjectURL(stream);
   video.play();
  }, errBack);
 }
 var clientW = document.documentElement.clientWidth*0.96;
 document.getElementById("canvas").width = clientW;
 

 document.getElementById("snap").addEventListener("click", function() {
  context.drawImage(video, 0, 0, clientW, 480);
 });
}, false);

</script>

</body>
</html>

主要代碼如下:

window.addEventListener("DOMContentLoaded", function() {
 var canvas = document.getElementById("canvas"),
  context = canvas.getContext("2d"),
  video = document.getElementById("video"),
  videoObj = { "video": true },
  errBack = function(error) {
   console.log("視頻擷取失敗: ", error.code);
  };

 if(navigator.getUserMedia) { // Standard
  navigator.getUserMedia(videoObj, function(stream) {
   video.src = stream;
   video.play();
  }, errBack);
 } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
  navigator.webkitGetUserMedia(videoObj, function(stream){
   video.src = window.webkitURL.createObjectURL(stream);
   video.play();
  }, errBack);
 } else if(navigator.mozGetUserMedia) { // moz-prefixed
  navigator.mozGetUserMedia(videoObj, function(stream){
   video.src = window.URL.createObjectURL(stream);
   video.play();
  }, errBack);
 }
 
}, false);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.