您的限制条件混合了Chrome特定的格式和标准格式,这样在任何浏览器下都无法工作。
标准格式(在Chrome中仍需要polyfill):
var constraints = {
video: {
width: { min: 320 },
height: { min: 240 },
advanced: [
{ width: 320 },
{ width: { min: 320 } },
{ frameRate: 60 },
{ width: { max: 320 } },
{ facingMode: "user" }
]
}
};
标准还可以让你以声明方式表达,因此以下代码是相同或更好的选择:
(这里放链接)
var constraints = {
video: {
width: { min: 320, ideal: 320 },
height: { min: 240 },
frameRate: 60,
facingMode: "user",
}
};
最后,如果您想要缩小尺寸,请勿使用
min
。
min
和
max
是边界值,因此
min
不能给您低分辨率,恰恰相反,它设置了一个下限。请改用
ideal
来控制重力或甚至使用
max
。 我不会解释这在Chrome中是什么样子,因为它使用的语法已经过时,不能在其他浏览器中使用,但
此代码段使用polyfill可以在各个浏览器中运行。
var constraints = {
video: {
width: { min: 320, ideal: 320 },
height: { min: 240 },
frameRate: 60,
facingMode: "user",
}
};
function start() {
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) { v.srcObject = stream; })
.then(function() {
return new Promise(function(r) { v.onloadedmetadata = r;});
})
.then(function() {
log("Success: "+ v.videoWidth +"x"+ v.videoHeight);
})
.catch(failed);
}
function log(msg) { div.innerHTML += "<p>" + msg + "</p>"; }
function failed(e) { log(e + ", line " + e.lineNumber); }
<video id="v" height="120" width="160" autoplay></video><br>
<button onclick="start()">Start!</button><div id="div"></div>
<script src="https://rawgit.com/webrtc/adapter/master/adapter.js"></script>
quality
不是一个标准的限制条件。