html - 如何使用 getUserMedia 获取网络摄像头图像的大小?

标签 html webcam dimensions getusermedia

我试图找出使用 getUserMedia 从网络摄像头获取的图像的大小。

现在,在我的 Macbook 中,我应该有一个 720p 的相机,但我得到的图像是 640x480。不过,我假设情况并非总是如此,而且我希望能够处理尽可能多的相机。 (我更关心宽高比而不是尺寸本身,我只是想确保图片不会拉伸(stretch))

这有可能吗?

谢谢!
丹尼尔

最佳答案

您应该能够使用 videoWidthvideoHeight 属性,如下所示:

// Check camera stream is playing by getting its width
video.addEventListener('playing', function() {
    if (this.videoWidth === 0) {
        console.error('videoWidth is 0. Camera not connected?');
    }
}, false);

更新:实际上,这在 Opera 中有效,但在 Chrome 中似乎不再受支持,并且尚未在 Firefox 中实现(至少对于视频流而言)。它在 HTML5 spec 中, 不过,希望这些浏览器的路线图上有。

更新 2:这确实有效,但要监听的事件是“播放”而不是“播放”(已在上面的代码中修复)。当返回 play() 方法时会触发“play”事件,而当实际开始播放时会触发“playing”事件。在 Opera、Chrome 和 Firefox 中测试。

更新 3:Firefox 18 似乎反复触发“播放”事件,这意味着如果您在监听器中执行大量代码,浏览器可能会停止运行。最好在触发后删除监听器,如下所示:

var videoWidth, videoHeight;
var getVideoSize = function() {
    videoWidth = video.videoWidth;
    videoHeight = video.videoHeight;
    video.removeEventListener('playing', getVideoSize, false);
};

video.addEventListener('playing', getVideoSize, false);

关于html - 如何使用 getUserMedia 获取网络摄像头图像的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256316/

相关文章:

html - 为什么没有呈现我的类的所有属性?

c++ - 虚拟网络摄像头驱动程序

c# - 使用C#Accord .Net从网络摄像头录制视频和音频

flash - HTML 5 流网络摄像头视频?

machine-learning - 有没有有效的方法来进行双向降维?

html - 同一行上的不同文本样式

javascript - 一页上的多个数据表不起作用

html - 使用 CSS 使开关切换更暗

java - Google Analytics API 中维度和指标的内部工作组合

android - TextView 尺寸 - 手机和平板电脑