javascript - getUserMedia()的分辨率约束不能正常工作( WebRTC )

  显示原文与译文双语对照的内容
0 0

我是WebRTC新手,测试一个简单的视频流在 Chrome 中的应用。 我有三种不同类型的约束,它的分辨率如下:

:320 x 240,vga: 640 x 480,hdVga: 1280 x 720.

当我捕获媒体时,它运行得很好。 但是当我从 qvga 分辨率开始并点击任何它的他按钮时,它会加载对象,我甚至可以观察 console.log 。 其他两个分辨率设置 例如 vgahdVga 不反映窗口中的任何更改。 同样,当我重新加载页面并从 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>

时间: 原作者:

0 0

你需要同时指定最小值和最大值。 约束通知浏览器你希望使用的值的范围。 通过不指定下限,你同意在hdVga案例中的0个in和 1280条内存之间进行任何分辨率。 由于 Chrome 默认为 640 x480,所以你将得到。

要获取 1280,请指定一个小时的最小

如果你需要相机,约束不是"提示",如果你需要相机的值,fail fail constraining constraining,因为人们有不同的相机具有不同的功能,所以小心。 相机也是单个资源,因此你可能必须与其他标签共享它。 这就是为什么要以这种方式构建约束。

如果你使用的是 constraints,那么你就可以使用更高的分辨率,但是在使用标准相机的时候,我们会忽略它,而标准的解决方法是使用标准的cameras,而标准的解决方法则是。 有关更多信息,请参见

规范最终稳定,即将推出的adapter.js ( 。跨浏览器 polyfill ) 应该很快就能解决这个问题。 在这之前,请参见这里的,为的约束示例,并警告它们不会在其他浏览器中工作。

原作者:
...