2

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

  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 的视频源大小输入到约束中也不起作用,因为它似乎需要比源更大的区域来捕获它。不知道为什么不能完全按原样捕获?也许还有其他我做错的事情可以解决这个问题?

如何在捕获视频时获取视频的大小,以便将约束设置为视频的实际大小?所以捕获的图像与源视频的大小完全相同,没有黑色边框等。

4

1 回答 1

0

答案很简单。

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

990 / 770 = 1.28
995 / 744 = 1.33

所以 - 当你需要一个mandatory比率时1.28- 当然你会得到黑色边框。您违反1.33了相机支持的真实纵横比。

避免黑色边框的唯一方法是要求widthheight除以1.33.

希望这可以帮助。

于 2019-05-28T04:50:44.170 回答