javascript - 在不向 DOM 添加视频的情况下获取网络摄像头流分辨率?

标签 javascript html

我正在创建一个带有网络摄像头流的视频对象以应用于 Canvas 。我可以在不在 DOM 中绘制的情况下获得网络摄像头流分辨率吗?

// Triangel side length
const video = document.createElement('video')
const v = document.getElementById('video')
const vc = v.getContext('2d')
navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {
  video.src = window.URL.createObjectURL(stream)
  console.log(video)
  video.play()
  //this is where I want the stream resolution.
  vc.drawImage(video, -250, -250)

  loop()
})

最佳答案

您可以使用 videoWidthvideoHeight视频元素的属性以获得其分辨率(宽度 x 高度),即使没有将元素添加到 DOM。这些属性以 CSS 像素返回视频的固有宽度/高度。

const video = document.createElement('video')
const v = document.getElementById('video')
const vc = v.getContext('2d')
navigator.mediaDevices.getUserMedia({
    video: true
}).then((stream) => {
    video.src = window.URL.createObjectURL(stream)
    console.log(video)
    video.play()
    // get video / stream resolution
    video.onloadedmetadata = function() {
        console.log('resolution: ' + this.videoWidth + ' x ' + this.videoHeight);
    };
    vc.drawImage(video, -250, -250)
    loop()
})

注意:您必须在触发 loadedmetadata 事件后调用这些属性。

关于javascript - 在不向 DOM 添加视频的情况下获取网络摄像头流分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42484292/

相关文章:

jquery - 具有不同设计的多个淡入/淡出子菜单

jquery - 是什么让下拉菜单覆盖其他元素?

jquery - 如何仅将 CSS 应用于段落中的数字? (没有 <span>)

asp.net - 如何在 html 或 asp 标签中将标题放在双引号中

JavaScript 库开发

javascript - 在jsp页面中重新运行测试而不重新加载页面

javascript - 在 AngularJS 服务调用后填充 jQuery UI Accordion

javascript - 在集群模式下将 pm2 与 node.js 一起使用是否安全

javascript - Bootstrap - 当我在导航栏上添加带有滚动箭头的滑动菜单时出现问题

javascript - 完整 Node.js 网站的组成部分