J'apprends sur web-rtc , il dit que vous pouvez capturer une caméra vidéo, j'ai utilisé démo , et bien cela a fonctionné chrome uniquement ..
quand je l'ouvre sur firefox j'obtiens un message "getUserMedia() not supported in your browser."
d'autre part quand j'ouvre ceci HTML5-rocks-demo
cela a fonctionné à 100%. quels changements ou plugins ou quelque chose qui me manque et qui permettent à getusermedia()
de fonctionner.
Le problème n'est pas seulement le nom de fonction préfixé; le flux fourni fonctionne différemment dans les différents navigateurs. Ici, je vais vous guider à travers cela.
Je suppose que vous avez déjà configuré un élément vidéo dans la variable appelée video
.
//I don't usually like to overwrite publicly accessible variables, but that's just me
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var cameraStream;
getUserMedia.call(navigator, {
video: true,
audio: true //optional
}, function (stream) {
/*
Here's where you handle the stream differently. Chrome needs to convert the stream
to an object URL, but Firefox's stream already is one.
*/
if (window.webkitURL) {
video.src = window.webkitURL.createObjectURL(stream);
} else {
video.src = stream;
}
//save it for later
cameraStream = stream;
video.play();
});
Cela devrait vous couvrir pour Firefox, Chrome et Opera. IE et Safari ne le prennent pas encore en charge).
Une autre chose potentiellement ennuyeuse à savoir est de savoir comment éteindre l'appareil photo si vous souhaitez arrêter de l'utiliser avant de quitter la page Web. Utilisez cette fonction:
function stopWebCam() {
if (video) {
video.pause();
video.src = '';
video.load();
}
if (cameraStream && cameraStream.stop) {
cameraStream.stop();
}
stream = null;
}
Depuis Safari 11 est sorti, cela fonctionne partout (testé sur les versions récentes de Chrome, Firefox et Safari 11):
var constraints = {audio: false, video: true};
var video = document.querySelector("video");
function successCallback(stream) {
video.srcObject = stream;
video.play();
}
function errorCallback(error) {
console.log("navigator.getUserMedia error: ", error);
}
navigator.mediaDevices.getUserMedia(constraints)
.then(successCallback)
.catch(errorCallback);
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var constraints = {audio: false, video: true};
var video = document.querySelector("video");
function successCallback(stream) {
window.stream = stream; // stream available to console
if (window.URL) {
video.src = window.URL.createObjectURL(stream);
} else {
video.src = stream;
}
}
function errorCallback(error){
console.log("navigator.getUserMedia error: ", error);
}
navigator.getUserMedia(constraints, successCallback, errorCallback);
getUserMedia
doit être préfixé avec webkit- ou moz-. Le premier exemple est uniquement préfixé avec webkit-. Pour cela, il ne fonctionnera jamais sur Firexox, seulement Chrome et Safari.
L'exemple de code n'affiche pas le préfixe ...
Le préfixe peut être fait de cette manière:
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;