J'utilise getusermedia pour enregistrer de l'audio sur mon site Web. J'ai inclus le javascript de getusermedia. La fonction d'enregistrement fonctionne bien sur le site Web, mais ne s'affiche même pas pour obtenir l'autorisation lors de son ouverture sur mobile.
var constraints = {
audio: true,
video: false
}
navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
permissiongiven = 1;
});
voici l'exemple de code qui me demande l'autorisation mais ne fonctionne pas sur mobile. Comment puis-je le faire fonctionner sur les deux appareils. Toute aide est appréciée. Merci.
Modifier: - Le code fonctionne désormais correctement sur mobile également. Peut-être que cela a été résolu à partir des mises à jour de chrome ou des certificats de sécurité du site Web. Merci à tous pour votre aide.
5 Réponses :
J'ai trouvé ce site Web utile pour répondre à cette question
https://caniuse.com/#search=getusermedia
Il indique que getUserMedia n'est pris en charge que par Chrome pour la version 70 d'Android (sortie le 16 octobre 2018)
Vérifiez MDN , puis effectuez assurez-vous que votre navigateur le prend en charge. Vous avez besoin de Chrome pour Android 52+, dit-il. FWIW 68 fonctionne pour moi .
Vous devriez également vérifier et détecter les erreurs:
if (!navigator.mediaDevices) {
console.log("Sorry, getUserMedia is not supported");
return;
}
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => permissiongiven = 1)
.catch(error => console.log(error));
En fonction de l'erreur que vous obtenez, nous pourrions en savoir plus.
NotFoundError signifie qu'aucune caméra ou micro n'a été détecté sur l'appareil. NotAllowedError signifie que la permission de l'utilisateur n'est pas accordée, ou que vous êtes dans un iframe ou non https. Je ne savais pas que navigator.getUserMedia était obsolète (du moins pour Samsung, sur lequel je testais), et j'ai trouvé cet article sur l'audio Web avec un exemple de code que j'ai à peine modifié:
p >
function initGetUserMedia() {
navigator.mediaDevices = navigator.mediaDevices || {}
navigator.mediaDevices.getUserMedia = navigator.mediaDevices.getUserMedia || function(constraints) {
let getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia not supported by this browser'));
} else {
return new Promise((resolve, reject) => {
getUserMedia.call(navigator, constraints, resolve, reject);
});
}
}
}
Notez que sur les appareils mobiles, vous devez utiliser SSL pour utiliser getUserMedia () . Vérifiez si vous accédez à votre site Web avec un préfixe http: // . Essayez de le changer en https: // et cela devrait fonctionner correctement.
Quel système d'exploitation / navigateur mobile utilisez-vous?
J'utilise Android avec la version Marshmallow et le navigateur Chrome.
Ma réponse ci-dessous vous a-t-elle aidé?
Merci à tous mais le problème est résolu automatiquement. Je suppose que l'application Chrome a mis à jour ses fonctionnalités pour permettre l'accès au microphone à partir de sites Web.