html - 帧速率如何以及为什么会改变 HTML5 视频或 Canvas 的纵横比?

标签 html html5-canvas html5-video frame-rate getusermedia

当我在下面的代码示例中更改 frameRate 时,我的网络摄像头的宽高比会在 Video 元素上发生变化(请参见下面的代码和附加的图像)。例如,它可以从 800x600 更改为 1280x720。我还尝试将图像绘制到 Canvas 元素上,结果相同。

const constraints = {
  audio: true, video: {frameRate:{max:1}}
};

enter image description here

...相对于这个...

const constraints = {
  audio: true, video: {frameRate:{max:15}}
};

enter image description here

为什么仅通过更改帧速率会发生这种情况?我认为帧速率与尺寸无关。有没有办法预测/计算纵横比的变化?

最佳答案

这取决于您的相机支持的分辨率和帧速率。

在为视频捕获设置限制条件时,您无法真正保证会得到您要求的内容。它们本质上是关于您想要什么的建议。浏览器将尝试以您要求的帧速率和分辨率进行捕获。如果它不能完全匹配(并且如果您没有指定 exact),它将尽力而为。在您的情况下,最接近您在相机上要求的帧速率的分辨率必须不同。

您需要做的是使用 .videoHeight.videoWidth您在其中显示视频的视频元素的属性。

处理此问题的最佳方法是监听 resize事件。这很重要,因为宽度/高度实际上可以随时更改!有时,如果系统跟不上大视频,视频可能会在中途变小。一个更实际的例子是当您旋转手机时,视频也会随之旋转。 resize 事件将触发。

关于html - 帧速率如何以及为什么会改变 HTML5 视频或 Canvas 的纵横比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964949/

相关文章:

javascript - 文本溢出 :ellipsis doesn't work on in Table cell hyper links

html - TITLE 属性应该出现在图像上还是 SEO 的父链接上?

html - 内联 SVG 会增加父元素的高度 - 为什么以及如何防止它?

javascript - HTML5 Canvas 随机形状

javascript - 使用媒体片段循环播放视频?

html - html5 + css 中的控制栏比视频宽

javascript - 在使用 jQuery 打开时,将更多选项添加到选择下拉列表中

javascript - 如何从 Canvas 中删除图像(元素)

javascript - 如何从整个图像的缓存像素数据中获取 Canvas 图像数据的矩形部分?

browser - 使用 HTML5 录制屏幕(截屏视频),例如getUserMedia 还是什么?