4 votes

problèmes de définition de différentes résolutions avec WebRTC

J'essaie d'utiliser la fonctionnalité getUserMedia de WebRTC pour prendre des instantanés dans un flux vidéo provenant de la caméra de l'utilisateur. Le problème est que je veux utiliser une résolution de 640 X 480 fonctionnant respectivement dans les versions Firefox 19.02, Opera 12.14 et Chrome 25.0.1364.172, mais je ne suis pas en mesure d'utiliser cette résolution dans Firefox et Opera. Lorsque j'essaie, l'image apparaît coupée du bas avec une résolution de 640 X 360. De toute façon, si j'essaie de changer la résolution dans Chrome, cela ne fonctionne pas non plus avec une résolution supérieure à 640 X 480. Est-ce que quelqu'un a le même problème ? Je voudrais savoir si c'est un bug ou autre, mais je n'ai vu aucune information à ce sujet. C'est mon code, j'ai essayé de plusieurs façons comme mettre des contraintes avec la largeur et la hauteur minimum mais ça ne marche pas :

le script :

navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia;
if(navigator.getUserMedia){
    navigator.getUserMedia({
      video: true
      }, onSuccess, onError);
}
else{
    alert('An error has occurred starting the webcam stream, please revise the instructions to fix the problem');
}
function onSuccess(stream) {
    var video = document.getElementById('webcam');

    if(navigator.webkitGetUserMedia || navigator.mozGetUserMedia){
        video.src = window.URL.createObjectURL(stream);
    }
    else if(navigator.msGetUserMedia){
        //future implementation over internet explorer
    }
    else{
        video.src = stream;
    }
    video.play();
}
function onError() {
    alert('There has been a problem retrieving the streams - did you allow access?');
}

le css (c'est seulement pour prouver, il ne met pas tout à la bonne place) :

body {
    margin: 0px 0px;
    padding: 0px 0px;
}
#videoFrame {
    margin: 0px auto;
    width: 640px;
    height: 480px;
    border: 10px #333 solid;
}
#webcam {
    videoWidth: 640px;
    videoHeight: 480px;
}
#captureFrame {
    margin: 0px auto;
    width: 640px;
    height: 480px;
}
#webcamContent {
    width: 1280px;
    height: 480px;
}

et le fichier jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <title>Testing WebRTC</title>`
        <link href="css/styles.css" rel="stylesheet" type="text/css" />`
    </head>
    <body>
        <div id="webcamContent">
            <div id="videoFrame">
                <video id="webcam"></video>
            </div>
            <div id="captureFrame">
                <canvas id="bioCapture"></canvas>
            </div>
        </div>
        <script src="js/webRTC.js"></script>
    </body>
</html>

Merci d'avance !

6voto

Muaz Khan Points 1744

Essayez maxWidth/maxHeight contraintes :

var video_constraints = {
   mandatory: {
       maxHeight: 480,
       maxWidth: 640 
   },
   optional: []
};

navigator.getUserMedia({
   audio: false,
   video: video_constraints
}, onsuccess);

Mise à jour (26 septembre 2013) :

Selon cette page vous pouvez définir les résolutions suivantes (largeur/hauteur min/max) :

1920:1080
1280:720
960:720
640:360
640:480
320:240
320:180

Ou Peut-être :

1280:800
1280:720
960:600
960:540
640:400
640:360
640:480
480:300
480:270
480:360
320:200
320:180
320:240
240:150
240:135
240:180
160:100
160:90
160:120

0voto

Felix Hagspiel Points 140

J'ai eu le même problème en ne gardant pas l'aspect-ratio de la caméra ou en essayant de forcer des framerates qu'elle ne supporte pas (c'est une vieille caméra USB). Essayez donc comme @Muaz Khan l'a suggéré mais ne définissez qu'un seul paramètre obligatoire, c'est à dire :

var video_constraints = {
   mandatory: {
        maxWidth: 640
   },
   optional: []
};

navigator.getUserMedia({
   audio: false,
   video: video_constraints
}, onsuccess);

EDIT : essayez également différentes valeurs, par exemple maxHeight : 120 n'a pas fonctionné pour moi, mais maxHeight:180 a fonctionné. Je suppose que cela dépend de la caméra

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X