【发布时间】:2015-02-12 14:56:58
【问题描述】:
我是 WebRTC 的新手,正在 Chrome 中测试一个简单的视频流应用程序。我有以下三种不同类型的约束:
qvga: 320 x 240, VGA:640 x 480, 高清VGA:1280 x 720。
当我捕获媒体时,它运行良好。但是当我以qvga 分辨率开始并单击任何其他按钮时,它会很好地加载对象,我什至可以使用console.log 观察约束。其他两个分辨率设置,即 vga 和 hdVga 它不反映窗口中的任何变化。同样,当我重新加载页面并从hdVga 按钮开始时,它会在屏幕上反映vga 分辨率,而对象属性显示hdVga 的约束,我无法找出问题所在。
HTML:
<head>
<!--<link rel="stylesheet" href="style.css" type="text/css"/>-->
</head>
<body>
<video id="localVideo" controls poster="images/posterImage.png" ></video>
<div id="buttons">
<button id="qvga">320x240</button>
<button id="vga">640x480</button>
<button id="hd">1280x720</button>
</div>
<video id="remoteVideo" poster="images/posterImage.png" ></video>
</script src="videoplayer.js"></script>
<script src="adapter.js"></script>
<script>
var qVga = document.querySelector("button#qvga");
var vga = document.querySelector("button#vga");
var hdVga = document.querySelector("button#hd");
var qVgaConstraints = {video:{
mandatory:{
maxWidth: 320,
maxHeight: 240
}
},audio:true};
var vgaConstraints = {video:{
mandatory:{
maxWidth: 640,
maxHeight: 480
}
},audio:true}
var hdVgaConstaints = {video:{
mandatory:{
maxWidth: 1280,
maxHeight:720
}
},audio:true};
function successCallback(stream){
window.stream = stream;
var video = document.querySelector("#localVideo");
video.src = window.URL.createObjectURL(stream);
video.play();
}
function errorCallback(error){
console.log("error: ",error);
}
qVga.onclick = function(){getMedia(qVgaConstraints)};
vga.onclick = function(){getMedia(vgaConstraints)};
hdVga.onclick = function(){getMedia(hdVgaConstaints)};
function getMedia(constraints){
console.log(constraints.video.mandatory);
getUserMedia(constraints,successCallback,errorCallback);
}
</script>
</body>
【问题讨论】:
-
你的浏览器是什么? Firefox 并不像 Chrome 那样真正支持这样的约束。此外,webrtc 受到相机驱动程序在特定操作系统上允许的限制。
-
我将在这里与 benjamin 一起使用:约束只是“提示”,所以无论您提出什么要求,GUM 都会返回相机可以执行的“更接近”您请求的操作。 “更紧密”的定义尚不清楚(即使在标准委员会成员中也是如此)。
-
@BenjaminTrent 我在 win 8.1 上使用 chrome。我必须提交任何仍然搞砸的项目。有什么建议在特定情况下该怎么做?
-
针对您的特定相机、操作系统、chrome 版本向 chrome 提交错误
-
Firefox 确实支持约束,只是不支持 Chrome 使用的非标准约束。见this answer。
标签: javascript google-chrome constraints webrtc getusermedia