2011-04-30 1 views
16

Je suis actuellement en cours d'exécution de Chrome 11 et j'essaie d'accéder au getUserMedia pour la prise en charge du flux audio et vidéo natif HTML5, mais j'obtiens une erreur indiquant que navigator.getUserMedia n'est pas défini. Si ce n'est pas le cas, comment y accéder ou dois-je attendre que Chrome l'intègre?Comment accéder à navigator.getUserMedia()?

C'est le code que j'utilisais pour tester getUserMedia que j'ai trouvé

<h1>Snapshot Kiosk</h1> 
<section id="splash"> 
    <p id="errorMessage">Loading...</p> 
</section> 
<section id="app" hidden> 
    <p><video id="monitor" autoplay></video> <canvas id="photo"></canvas> 
    <p><input type=button value="&#x1F4F7;" onclick="snapshot()"> 
</section> 
<script> 
    navigator.getUserMedia('video user', gotStream, noStream); 
    var video = document.getElementById('monitor'); 
    var canvas = document.getElementById('photo'); 
    function gotStream(stream) { 
    video.src = URL.getObjectURL(stream); 
    video.onerror = function() { 
     stream.stop(); 
     noStream(); 
    } 
    video.onloadedmetadata = function() { 
     canvas.width = video.videoWidth; 
     canvas.height = video.videoHeight; 
     document.getElementById('splash').hidden = true; 
     document.getElementById('app').hidden = false; 
    } 
    } 
    function noStream() { 
    document.getElementById('errorMessage').textContent = 'No camera available.'; 
    } 
    function snapshot() { 
    canvas.getContext('2d').drawImage(video, 0, 0); 
    } 
</script> 

Répondre

3

Je pense qu'il ya une méthode stub dans le dernier dev chrome (12.0.742.16 dev) mais je ne peux pas l'obtenir faire quelque chose sur Mac OSX. Au moins, je pensais que je l'ai vu. Je viens de vérifier et la méthode ne semble plus être là. Voici le rapport de bug webkit pour l'implémentation de getUserMedia: https://bugs.webkit.org/show_bug.cgi?id=56586

Je pense que la seule implémentation qui fonctionne actuellement est dans Opera pour Android. http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview

La méthode chrome/webkit est webkitGetUserMedia mais elle n'est pas encore implémentée.

4

La dernière version de bureau d'opéra a un support pour getUserMedia() Voir ici: http://labs.opera.com/news/2011/10/19/

Il est juste un jeu d'attente pour les autres navigateurs mettre en œuvre. Maintenant que l'opéra a le soutien, l'autre devrait bientôt suivre.

3

Chrome Dev support du canal WebRTC vient d'être ajouté, alors maintenant ce que vous demandez ici devient réellement plausible. Voir: https://groups.google.com/forum/#!topic/discuss-webrtc/LuY7zYLA8sA

Fondamentalement, vous devez utiliser le préfixe webkit: webkitGetUserMedia() bien que la documentation sur cette méthode soit rare, j'essaie actuellement de reconstituer une démo de travail.

+1

http://miernicki.com/cam.html si vous êtes intéressé à voir une démo en action ... –

4

Depuis la nuit dernière (3 mai 2012), getUserMedia() dans Chrome Canary prend un objet et non une chaîne.

Pour l'essayer, vous pouvez exécuter le code suivant à partir de la console sur une page (comme this one) avec un élément vidéo:

navigator.webkitGetUserMedia(
    {"video": true, "audio": true}, 
    function(s){ 
    document.querySelector('video').src = 
     window.webkitURL.createObjectURL(s); 
    }, 
    function(e){console.log(e);} 
);