Javascript navigator.mediaDevices.getUserMedia获取源的宽度和高度

时间:2019-05-24 10:05:36

标签: javascript electron getusermedia mediadevices

我正在使用this code,但是当它得到源时,高度和宽度由下面的代码块中的约束设置,但是我想获得 actual 的大小视频。

  navigator.mediaDevices.getUserMedia({
    audio: false,
    video: {
      mandatory: {
        chromeMediaSource: 'desktop',
        chromeMediaSourceId: desktop_id,
        minWidth: 990,
        maxWidth: 990,
        minHeight: 770,
        maxHeight: 770
      }
    }
  }).then(gotStream).catch(getUserMediaError);

生成的捕获图像当然是990x770,但这会导致图像周围带有黑色边框。源的真实视频是995x744,但是由于给定的限制,它的边框变黑了。如果我没有设置任何约束,那么会抛出一个错误,说宽度为0,因此需要设置某种宽度。

即使将995x744的视频源大小手动输入到约束中也不起作用,因为它似乎需要比源更大的区域来捕获它。不确定为什么无法完全捕获它吗?也许还有其他我正在做错的事情可以解决这个问题?

如何在捕获视频时获取视频的大小,以便可以将限制设置为视频的实际大小?因此,捕获的图像与源视频的大小完全相同,没有黑边等。

1 个答案:

答案 0 :(得分:0)

答案很简单。

在一个简单的数学运算中,您可以看到:

990 / 770 = 1.28
995 / 744 = 1.33

所以-当您需要mandatory的{​​{1}}比时-当然,您会得到黑色边框。您违反了相机支持的1.28的真实宽高比。

唯一避免黑框的方法是要求1.33width的宽高比为height

希望这会有所帮助。