使用正确的宽高比嵌入Youtube / Vimeo视频

时间:2013-12-06 04:05:05

标签: javascript html css video youtube

所以我有一个视频页面,我嵌入了一个vimeo视频。问题是,宽高比经常是错误的,因为我没有设置宽度和高度。让我在视频中留下黑条。我只动态传递vimeo ID,所以我没有为每个视频设置宽度和高度。

动态视频ID如下:

<iframe src="http://player.vimeo.com/video/<?php echo $videoID; ?>?title=0&amp;byline=0&amp;portrait=0" width="400" height="225" frameborder="0"></iframe>

所以,我的问题是,有没有办法可以检测到视频的宽高比应该是多少?

我知道有很多插件可以帮助你保持流体宽度的纵横比,例如; - http://fitvidsjs.com/

你可以用css-tricks上描述的javascript来实现它: - http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php

- 但这些仅在您使用width和height属性开始设置正确的宽高比时才有效。

大多数新的vimeo视频似乎是width =“400”height =“225”,但是我的网站处理的是一些不共享此比率的旧视频,因此您可以在顶部和底部获得黑色管道视频或侧面。

我试图在每个视频中删除这些黑色管道。

感谢任何建议,

Alsweet

1 个答案:

答案 0 :(得分:9)

获取尺寸

您可以使用oEmbed。 oEmbed是一个用于显示嵌入内容的API。您向服务端点发出HTTP请求,例如:

请求示例

http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=NWHfY_lvKIQ

您收到了视频维度的JSON响应(以及其他有用信息)。

响应示例:

{
    "title": "Learning from StackOverflow.com", 
    "height": 270,
    "author_url": "http:\/\/www.youtube.com\/user\/GoogleTechTalks",
    "author_name": "GoogleTechTalks",
    "provider_name": "YouTube",
    "thumbnail_url": "http:\/\/i.ytimg.com\/vi\/NWHfY_lvKIQ\/hqdefault.jpg",
    "html": "\u003ciframe width=\"480\" height=\"270\" src=\"http:\/\/www.youtube.com\/embed\/NWHfY_lvKIQ?feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e",
    "provider_url": "http:\/\/www.youtube.com\/",
    "thumbnail_width": 480,
    "width": 480,
    "thumbnail_height": 360,
    "version": "1.0",
    "type": "video"
}

您可以在oEmbed网站上阅读完整文档。此API提供了访问嵌入式内容的标准方式,并且受到许多热门服务的支持,以下是一些:

  • 的YouTube
  • Vimeo的
  • 的Flickr
  • 葫芦
  • deviantART的
  • WordPress的
  • MixCloud
  • 的SoundCloud

正确显示视频

oEmbed为您提供宽度和高度,因此您可以根据需要设置宽度和高度。

如果您的网站有响应,那么有些插件可以帮助您在调整大小时保持宽高比。

但是,我更喜欢纯CSS方法。您可以使用oEmbed的宽度和高度来执行以下操作:

您可以将嵌入代码包装在包含div的内容中,使iframeobject 100%的宽度和高度,并在容器内使用另一个div来提供容器高度。内部div将具有60%的padding-top,迫使主容器的高度为其宽度的60%。您只需使用来自oEmbed的信息计算高度的百分比来计算要使用的填充量。

示例HTML

<div class="video">
    <span class="video-height"></span>
    <iframe src="https://www.youtube.com/embed/NWHfY_lvKIQ" frameborder="0">   </iframe>
</div>

CSS示例

.video {
    width: 50%;
    position: relative;
}

.video > .video-height {
    padding-top: 60%;
    display: block;
}

iframe {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

您可以在此处查看一个有效的示例:https://jsfiddle.net/k2eyty4f/3/调整窗口大小以查看高度如何自动调整为宽度的百分比。