Youtube oembed:它如何计算'宽度'和'高度'值?

时间:2012-04-28 01:57:56

标签: php youtube dimensions oembed

当我在我的PHP代码中使用oembed URL并从我上传的视频中提取$video->width$video->height时,我得到的值与我在Youtube上看到的任何内容都不匹配视频。

  • http://youtu.be/p7ftPYU2_0w

  • 上传到Youtube的原始视频尺寸: 640 x 336

  • oembed return: 480 x 270

  • 从Youtube页面界面分享时最小的嵌入选项: 560 x 316

有谁知道oembed在哪里获得这些价值?为什么默认为480?有没有办法获得真正的视频尺寸,或者最少将默认值提升到640 x [proportional_height]

我的目标是在嵌入我的网站时保留视频的原生尺寸(无缩放),没有用户实际上需要再次输入视频尺寸。

4 个答案:

答案 0 :(得分:2)

Youtube可能会生成一个内容,可以为嵌入内容而不是原始视频提供内容。生成的内容的宽度和高度可以是 480 x 270 。因此,oEmbed api可以始终返回此值。 AFIK没有办法从api端获取视频值的原始尺寸,除非或直到提供者提供。

你可以尝试在jquery和css的帮助下调整视频的宽度和大小。

oEmbed规范在申请api时可以提供maxwidthmaxheight参数。所以我们可以限制视频的最大宽度和高度。

希望它有所帮助!

答案 1 :(得分:0)

您可以随时使用CSS进行调整。

答案 2 :(得分:0)

尝试这样的事情

<iframe title="YouTube video player" width="727" height="430" src='http://www.youtube.com/embed/p7ftPYU2_0w' frameborder="0"></iframe>

据我所知,没有办法从嵌入中获取视频的高度。当页面加载并从那里开始时,您可以使用jquery来获取播放器的高度。

答案 3 :(得分:0)

oembed响应中的宽度和高度是正确显示返回的html内容所需的最小高度和宽度。这是视频,界面,任何额外的标题栏或控件或徽标等等。

唯一重要的是当要求提供回复时。请求将指定支持的最大大小的宽度和高度,响应将指定显示内容所需的最小大小。

如果最小内容响应大小不符合最大容器请求大小,那么oembed尝试将失败。

在这种情况下,youtube声明显示youtube界面需要480 x 270。它实际上没有说明视频本身,只有界面,因为任何浏览器都可以自动将任何视频缩放到任何分辨率。