eduardolundgren / tracking.js

A modern approach for Computer Vision on the web
http://trackingjs.com
Other
9.43k stars 1.44k forks source link

I can't cancel camera selection of trackingjs. #292

Open zokanzi opened 6 years ago

zokanzi commented 6 years ago

I am using 3 cameras for color tracking on 3 pages. I want select only one camera. But it chooses the same camera every time. I choose the camera which I want when I delete the tracking-min.js file. Of course not working color tracking when I delete this file on my page. My codes below.

window.onload = function() {
var video = document.getElementById('video');
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var tracker = new tracking.ColorTracker(['yellow']);

tracking.track('#video', tracker, { camera: true });
tracking.ColorTracker.prototype.maxDimension = 200;
tracking.ColorTracker.prototype.minDimension = 20;

tracker.on('track', function(event) {
context.clearRect(0, 0, canvas.width, canvas.height);
        });
     initGUIControllers(tracker);
    };

.
.
.

//select camera codes
navigator.mediaDevices.enumerateDevices()
  .then(gotDevices).then(getStream).catch(handleError);

function gotDevices(deviceInfos) {
  for (var i = 0; i !== deviceInfos.length; ++i) {
    var deviceInfo = deviceInfos[i];
    if (deviceInfo.kind === 'videoinput') {
        if (i == 5) {   // here i select cam 
        id = deviceInfo.deviceId;
        }
    }  
  }
}

function getStream() {

  var constraints = {
    video: {
      deviceId: {exact: id}
    }
  };

  navigator.mediaDevices.getUserMedia(constraints).
    then(gotStream).catch(handleError);
}

function gotStream(stream) {
  window.stream = stream; // make stream available to console
  videoElement.srcObject = stream;
}

Thanks for your helps...