尝试使用getUserMedia帧率约束

trying to use the getUserMedia framerate constraint

本文关键字:帧率 约束 getUserMedia      更新时间:2023-09-26

我正在尝试调整getUserMedia网络摄像头流的帧率显示。我尝试使用的方法是

var constraints = { video: { frameRate: { ideal: 10, max: 15 } } };

在Moz开发人员网络中引用。

我想创建几个函数,可以调用来改变帧率到不同的设置,但在试图实现约束它似乎没有效果。我试过单独使用

function setFps1() {
var constraints ...
}

以及在(重新)声明流

的函数中
    function useVideo(){
    // Query user for device permission
    navigator.mediaDevices.getUserMedia({video: true})
    // If granted
     .then(function(stream) {
         // Stream & play video from webcam
          var video = document.getElementById('userVideo');
          var constraints = { video: { frameRate: { ideal: 10, max: 15 } } };
          video.src = window.URL.createObjectURL(stream);
          video.play();
        })
    // If not
    .catch(function(error) {
        alert(error.message);
    });
    }

,

    function useVideo(){
    // Query user for device permission
    navigator.mediaDevices.getUserMedia({video: true})
    // If granted
     .then(function(stream) {
         // Stream & play video from webcam
          var video = document.getElementById('userVideo');
          video.src = window.URL.createObjectURL(stream);
          video.play();
          var constraints = { video: { frameRate: { ideal: 10, max: 15 } } };
        })
    // If not
    .catch(function(error) {
        alert(error.message);
    });
    }

的好措施,认为也许视频必须首先播放帧率之前可以设置。

如何使用帧速率约束,或者是什么阻止我使用它?

一行:

var constraints = { video: { frameRate: { ideal: 10, max: 15 } } };

只是将一个局部变量constraints初始化为指定的对象。对其他东西没有影响。

使用getUserMediaapplyConstraints功能对相机设置约束,例如:

navigator.mediaDevices.getUserMedia(constraints)
  .then(function(stream) {
    var video = document.getElementById('userVideo');
    video.srcObject = stream;
    video.play();
  })
  .catch(error => console.log(error));

var track = video.srcObject.getVideoTracks()[0];
track.applyConstraints(constraints).catch(e => console.log(e));

一旦你让它工作,请注意,浏览器目前实现的约束有点不同。