使用JavaScript获取HTML5视频的宽度和高度?

时间:2017-02-24 13:41:32

标签: javascript html html5

我在这里找到了几个答案。

此代码适用于Firefox并输出正确的大小,但不适用于Chrome或IE。

主要是我试图获得宽度。

示例

我使用3个示例在视频下输出宽度。

https://jsfiddle.net/a8a1o8k2/

的JavaScript

https://stackoverflow.com/a/4129189/6806643

var vid1 = document.getElementById("video");
vid1.videoHeight; // returns the intrinsic height of the video
vid1.videoWidth; // returns the intrinsic width of the video

返回0

https://stackoverflow.com/a/9333276/6806643

var vid2 = document.getElementById("video");
vid2.addEventListener( "loadedmetadata", function (e) {
    var width = this.videoWidth,
        height = this.videoHeight;
}, false );

返回0

https://stackoverflow.com/a/16461041/6806643

var vid3 = document.getElementById("video");
var videotag_width = vid3.offsetWidth;
var videotag_height = vid3.offsetHeight;

有时会返回正确的值
有时返回300(如果没有视频源则默认播放器大小)

2 个答案:

答案 0 :(得分:1)

编辑:在我实际阅读了crossbrowser问题之后改进了解决方案。

以下解决方案适用于Chrome和Firefox。问题是Firefox对待readyState的方式与Chrome不同。

var vid2 = document.getElementById("video");
vid2.addEventListener("loadedmetadata", getmetadata);

if (vid2.readyState >= 2) {
    getmetadata(vid2);
}

function getmetadata(){
    document.getElementById('output2').innerHTML = "Test 2: " + vid2.videoWidth;
}

更新了JSFiddle

答案 1 :(得分:0)

如果您尝试使用java脚本定义视频的大小,我不确定您实际尝试做什么,但在我看来,就像您只是希望它可以像这个示例一样进行自定义。

如果我们假设视频已嵌入,则下面的代码可以解决问题

// Find all YouTube videos
var $allVideos = $("iframe[src^='//www.youtube.com']"),

    // The element that is fluid width
    $fluidEl = $("body");

// Figure out and save aspect ratio for each video
$allVideos.each(function() {

  $(this)
    .data('aspectRatio', this.height / this.width)

    // and remove the hard coded width/height
    .removeAttr('height')
    .removeAttr('width');

});

// When the window is resized
$(window).resize(function() {

  var newWidth = $fluidEl.width();

  // Resize all videos according to their own aspect ratio
  $allVideos.each(function() {

    var $el = $(this);
    $el
      .width(newWidth)
      .height(newWidth * $el.data('aspectRatio'));

  });

// Kick off one resize to fix all videos on page load
}).resize();

您还可以参考此页面它的实际工作方式,还有动态视频重新缩放的CSS和HTML示例:

https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php