4

WebRTC の getUserMedia 機能を使用して、ユーザーのカメラからビデオ ストリーミングのスナップショットを取得しようとしています。問題は、Firefox 19.02、Opera 12.14、Chrome 25.0.1364.172 バージョンでそれぞれ 640 X 480 の解像度を使用したいのですが、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>

前もって感謝します!

4

2 に答える 2

6

maxWidth/maxHeight 制約を試してください:

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

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

更新 (2013 年 9 月 26 日):

このページによると; 次の解像度 (最小/最大幅/高さ) を設定できます。

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
于 2013-03-15T14:20:36.100 に答える