我正在使用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的视频源大小手动输入到约束中也不起作用,因为它似乎需要比源更大的区域来捕获它。不确定为什么无法完全捕获它吗?也许还有其他我正在做错的事情可以解决这个问题?
如何在捕获视频时获取视频的大小,以便可以将限制设置为视频的实际大小?因此,捕获的图像与源视频的大小完全相同,没有黑边等。
答案 0 :(得分:0)
答案很简单。
在一个简单的数学运算中,您可以看到:
990 / 770 = 1.28
995 / 744 = 1.33
所以-当您需要mandatory
的{{1}}比时-当然,您会得到黑色边框。您违反了相机支持的1.28
的真实宽高比。
唯一避免黑框的方法是要求1.33
和width
的宽高比为height
。
希望这会有所帮助。