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