I finally have a simple working example for (relatively old) Chrome,
Firefox, and Opera browsers. But NOT for Safari.
Thanks for everyone's help.

coclass'webcam'
coinsert'jhs'

HBS=: 0 : 0
    jhh1'webcam - https://davidwalsh.name/browser-camera'
    jhhr
'<video id="video" width="640" height="480" autoplay></video>'
'snap'jhb'Snap Photo'
'<canvas id="canvas" width="640" height="480"></canvas>'
)

jev_get=: 3 : 0
'webcam'jhrx(getcss''),(getjs''),gethbs''
)


JS=: 0 : 0
function ev_body_load(){init();} // must use JHS framework load handler

function errBack(){alert("ERROR");}

// javascript event handlers
function ev_snap_click(){context.drawImage(video, 0, 0, 640, 480);}


function init() {
// Grab elements, create settings, etc.
 canvas = document.getElementById('canvas');
 context = canvas.getContext('2d');
 video = document.getElementById('video');


if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    // Not adding `{ audio: true }` since we only want video now
    navigator.mediaDevices.getUserMedia({ video: true
}).then(function(stream) {
        video.src = window.URL.createObjectURL(stream);
        video.play();
    });
} else if(navigator.getUserMedia) { // Standard
    navigator.getUserMedia({ video: true }, function(stream) {
        video.src = stream;
        video.play();
    }, errBack);
} else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
    navigator.webkitGetUserMedia({ video: true }, function(stream){
        video.src = window.webkitURL.createObjectURL(stream);
        video.play();
    }, errBack);
} else if(navigator.mozGetUserMedia) { // Mozilla-prefixed
    navigator.mozGetUserMedia({ video: true }, function(stream){
        video.src = window.URL.createObjectURL(stream);
        video.play();
    }, errBack);
}
}
)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to