在js中获取html视频流的宽度和高度

Posted

技术标签:

【中文标题】在js中获取html视频流的宽度和高度【英文标题】:Getting width and height of html video stream in js 【发布时间】:2020-10-28 09:57:26 【问题描述】:

我试图在 html 和 js 中获取视频流的宽度和高度,它总是返回零,我不想在视频标签中指定宽度和高度,并且总是有什么自然设备视频宽度和高度然后检查它高度和宽度是js,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<video autoplay="true"></video>
<script>
    let video = document.querySelector("video")
    navigator.mediaDevices.getUserMedia(video: true)
        .then((stream) => 
            video.srcObject = stream
        )

    function vid() 
        let vidCheck = document.querySelector("video")
        console.log(vidCheck.videoWidth) // returns 0
        console.log(vidCheck.videoWidth)//returns 0
    

    vid()
</script>
</body>
</html>

【问题讨论】:

这会有帮助吗? ***.com/questions/4129102/html5-video-dimensions 【参考方案1】:

您使用了正确的属性。您只需要等待视频播放就可以达到一定的尺寸:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <video autoplay="true"></video>
    <script>
      let video = document.querySelector("video");
      navigator.mediaDevices.getUserMedia( video: true ).then((stream) => 
        video.srcObject = stream;
      );

      video.addEventListener("playing", () => 
        console.log(video.videoWidth);
        console.log(video.videoHeight);
      );
    </script>
  </body>
</html>

【讨论】:

【参考方案2】:

您可以使用以下示例通过元素的 html 属性或 CSS 属性获取元素的尺寸。

获取宽度:vidCheck.offsetWidth

获取高度:vidCheck.offsetHeight

【讨论】:

【参考方案3】:

只需查找视频,您就可以读取变量:

video.currentTime = 1;
console.log(video.videoWidth);
console.log(video.videoWidth);

【讨论】:

【参考方案4】:

此代码返回 640 宽度和 480 高度:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <video autoplay="true"></video>
    <script>
      let video = document.querySelector("video");
      navigator.mediaDevices.getUserMedia( video: true ).then((stream) => 
        video.srcObject = stream;
      );

      video.addEventListener("playing", () => 
        console.log(video.videoWidth);
        console.log(video.videoHeight);
      );
    </script>
  </body>
</html>

但是这段代码 sn-p 返回不同的东西 300 和 150 :

Get width: vidCheck.offsetWidth

Get height: vidCheck.offsetHeight

在我看来第一个是正确的,但不知道差异的原因。

【讨论】:

自然大小是网络摄像头的分辨率。偏移大小是你在html中显示的大小

以上是关于在js中获取html视频流的宽度和高度的主要内容,如果未能解决你的问题,请参考以下文章

获取真正的 HTML5 视频宽度和高度

客户端Javascript在上传前获取视频宽度/高度

HTML 视频中是不是有一个标签来制作最小高度和宽度?

如何在上传之前获取 html 文件输入的视频分辨率?

ueditor上传的视频是为啥我无法控制高度和宽度

如何使用代码动态的获取和设置ImageView的宽度和高度