Accessing WebCam with NodeJS

前端 未结 5 1400
轮回少年
轮回少年 2020-12-13 09:52

Does anyone have any experience with trying to access a webcam through node? I can\'t seem to find any prior attempts at this.

To expand a bit - I have a nodeJS serv

5条回答
  •  庸人自扰
    2020-12-13 10:41

    accessing web in node application is very simple we just need to use html5 getUserMedia() method to do that and reaming part is very easy here is complete code please node i am using express framework:

    Step 1. My layout.jade file in which i am accessing web cam

    extends layout
    block content
      div(class="container" id="Cool" ng-app="mainApp" ng-controller="formController")
        h2.blue.red#header("property"="pValue") Capture your image from webcam
        div.row
         div.col-md-6
           video#video(autoplay='')
         div.col-md-6
           canvas#canvas(width='640', height='480')
        div
          button#snap Capture
          button#new New
          button(id="upload" ng-click="uploadImage()") Upload
    
    
      script(type="text/javascript").
       // Put event listeners into place
          window.addEventListener("DOMContentLoaded", function() {
          // Grab elements, create settings, etc.
          var canvas = document.getElementById("canvas"),
          context = canvas.getContext("2d"),
          video = document.getElementById("video"),
          videoObj = { "video": true },
          errBack = function(error) {
          console.log("Video capture error: ", error.code);
          };
          // Put video listeners into place
          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.URL.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);
          }
          // Trigger photo take
          document.getElementById("snap").addEventListener("click", function() {
          context.drawImage(video, 0, 0, 640, 480);
          // Littel effects
          //$('#video').fadeOut('slow');
          $('#canvas').fadeIn('slow');
          //$('#snap').hide();
          //$('#new').show();
          // Allso show upload button
          //$('#upload').show();
          });
          // Capture New Photo
          document.getElementById("new").addEventListener("click", function() {
          //$('#video').fadeIn('slow');
          //$('#canvas').fadeOut('slow');
          //$('#snap').show();
          //$('#new').hide();
          });
          // Upload image to sever
          document.getElementById("upload").addEventListener("click", function(){
          var dataUrl = canvas.toDataURL();
           console.log(dataUrl);
    
          });
          }, false);   
       var mainApp = angular.module("mainApp", []);
       mainApp.controller("formController", function($scope, $http) {
           $scope.uploadImage = function () {
             var request = $http({
                method: "post",
                url:  "/captureImage",
                data: {
                   base64: document.getElementById("canvas").toDataURL()
                },
                headers: { 'Content-Type': 'application/json' }
              });
            request.success(function (data) {
              console.log(data);
            });
            request.error(function(serverResponse, status, headers, config) {
               alert("failure");
            });
          };
       });
    

    Step 2. my routes file in which i hand or save my uploaded image

    router.get('/captureImage', function(req, res, next) {
        res.render('captureImage', { title: 'Capture Image and upload' });
    });
    
    router.post('/captureImage', function(req, res, next) {
        //console.log("FormData "+ req.body.base64);
        var base64Data = req.body.base64.replace(/^data:image\/png;base64,/, "");
        fs.writeFile("uploads/out.png", base64Data, 'base64', function(err) {
            if(err){
                console.log(err);
                }else{
                res.send(JSON.stringify({'status': 1, 'msg': 'Image Uploaded'}));
            }
        });
    });
    

    For complete tutorial please follow link Accessing WebCam with NodeJS and save click image - TrinityTuts

提交回复
热议问题