html - 帧速率如何以及为什么会改变 HTML5 视频或画布的纵横比?
问题描述
当我在下面的代码示例中更改 frameRate 时,我的网络摄像头的宽高比会在 Video 元素上发生变化(参见下面的代码和附加图像)。例如,它可以从 800x600 更改为 1280x720。我还尝试将图像绘制到 Canvas 元素和相同的结果上。
const constraints = {
audio: true, video: {frameRate:{max:1}}
};
...相对于这个...
const constraints = {
audio: true, video: {frameRate:{max:15}}
};
为什么仅仅通过改变帧速率就会发生这种情况?我认为帧速率与尺寸无关。有没有办法预测/计算长宽比的变化?
解决方案
这取决于您的相机支持的分辨率和帧速率。
在为视频捕获设置约束时,你不能真正保证你会得到你想要的。它们本质上是关于你想要什么的建议。浏览器将尝试以您要求的帧速率和分辨率进行捕获。如果它不能完全匹配它(并且如果你没有指定exact
),它会尽力而为。在您的情况下,与您在相机上要求的最接近的帧速率必须具有不同的分辨率。
您需要做的是使用.videoHeight
和.videoWidth
显示视频的视频元素的属性。
处理这个问题的最好方法是监听resize
事件。这很重要,因为宽度/高度实际上可以随时更改!有时,如果系统无法跟上大视频,视频可能会在中途变小。一个更实际的例子是当你旋转手机时,视频也随之旋转。该resize
事件将触发。
推荐阅读
- javascript - 隐藏谷歌地图键
- java - Spring Rest 修改返回的 JSON 中的字段
- javascript - 事件监听器的多个过滤类
- okuma - Okuma OSP Controls 上的认证安装程序和可执行文件
- pip - pip installl - 跳过特定的依赖项
- google-apps-script - ScriptError:很抱歉,发生服务器错误。请稍等,然后重试
- java - FTP在服务器arq主机上写入字符NUL?
- alibaba-cloud - 等到阿里云镜像导入完成
- c++ - 如何从用户那里获取信息而不是使用特定值?
- javascript - 获取两个 HTML 注释中间的内容