проблемы с настройкой разных разрешений с WebRTC

Я пытаюсь использовать функцию WebRTC getUserMedia для создания снимков в потоковом видео с камеры пользователя. Проблема в том, что я хочу использовать разрешение 640 X 480, работая в версиях Firefox 19.02, Opera 12.14 и Chrome 25.0.1364.172 соответственно, но я не могу использовать это разрешение в Firefox и Opera. Когда я пытаюсь это сделать, изображение выглядит обрезанным снизу с разрешением 640 X 360. В любом случае, если я попытаюсь изменить разрешение в Chrome, оно не будет работать ни с разрешением выше, чем 640 X 480. Есть ли у кого-нибудь такая же проблема? Я хочу знать, ошибка это или что-то в этом роде, но я не видел никакой информации об этом. Это мой код, я много раз доказал такие ограничения с минимальной шириной и высотой, но он не работает:

сценарий:

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?');
}

CSS (это только для доказательства, он не помещает все в правильные места):

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;
}

и файл 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>

Заранее спасибо!


person user2158954    schedule 15.03.2013    source источник


Ответы (2)


Попробуйте maxWidth/maxHeight ограничения:

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

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

Обновлено (26 сентября 2013 г.)

Согласно этой странице; вы можете установить следующие разрешения (минимальная / максимальная ширина / высота):

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

Или Может быть:

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
person Muaz Khan    schedule 15.03.2013
comment
У меня снова та же проблема. В веб-камере моего ноутбука это работало хорошо (Windows Vista 64 бит), но у меня все еще есть та же проблема с другой камерой, подключенной через USB (это камера Creative, модель VF0700). Я знаю, что эта камера отлично работает с разрешением 640 X 480, я пробовал раньше с другим java-приложением, поэтому не вижу, в чем проблема. Компьютер, на котором я использую камеру, имеет ОС Windows 7 64 бита. Кто-нибудь знает, что может быть не так? - person user2158954; 18.03.2013
comment
Вы пробовали канарейку. Эти ограничения не поддерживаются в старой версии Chrome. - person Muaz Khan; 18.03.2013
comment
У меня последняя версия Chrome (25.0.1364.172), но на самом деле проблема не в Chrome (все равно он работал отлично), но в Firefox 19.02 (последняя версия, которую я могу получить) и Opera 12.14 она не работает. Странно то, что на моем ноутбуке он работал (может, и без этих ограничений работал, но я точно не знаю), а здесь не работает .. - person user2158954; 18.03.2013

У меня была такая же проблема, когда я не сохранял соотношение сторон камеры или пытался установить частоту кадров, которую она не поддерживает (это старая USB-камера). Так что попробуйте, как предложил @Muaz Khan, но установите только один обязательный параметр, а именно:

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

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

РЕДАКТИРОВАТЬ: также попробуйте разные значения, т.е. maxHeight: 120 у меня не сработало, но maxHeight: 180 сработало. Я думаю, это зависит от камеры

person Felix Hagspiel    schedule 24.07.2013
comment
Да, думаю, проблема связана с веб-камерой. Это не работает с более низкими значениями. - person user2158954; 26.07.2013