如何获得YouTube视频宽高比

时间:2011-02-15 22:53:37

标签: javascript youtube

我想获得YouTube视频的宽高比,以便相应地调整播放器的大小。我正在使用JavaScript编写YT播放器。

6 个答案:

答案 0 :(得分:11)

我建议点击oembed网址:

https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v= {VIDEOID}&安培;格式= JSON

这为您提供了公开视频的确切视频尺寸。我不确定私人视频。它还会返回缩略图尺寸,在某些情况下似乎有所不同,所以请务必不要混淆它们。

答案 1 :(得分:7)

在Data API调用中公开确切视频维度的唯一位置是使用v3 API进行videos.list(part=fileDetails, id=VIDEO_ID)调用,同时作为视频所有者进行身份验证。它在video.fileDetails.videoStreams[].aspectRatio属性中返回。这不是特别有用,因为您需要作为视频所有者进行身份验证才能获得该信息。

如果您只有一个网页,并希望进行JSONP调用以获取有关给定视频是16:9还是4:3的提示,您可以通过类似

的方式进行此操作

http://gdata.youtube.com/feeds/api/videos/ VIDEO_ID V = 2及?ALT = jsonc&安培;回调= myCallBack函数

E.g。

http://gdata.youtube.com/feeds/api/videos/F1IVb2_FYxQ?v=2&alt=jsonc&callback=myCallback

在其响应中设置"aspectRatio":"widescreen",这暗示视频为16:9(或接近16:9)。

http://gdata.youtube.com/feeds/api/videos/u1zgFlCw8Aw?v=2&alt=jsonc&callback=myCallback

根本没有设置aspectRatio,这意味着视频是4:3(或接近4:3)。它并不总是精确的宽高比,但它足够接近绝大多数视频都有用。

答案 2 :(得分:3)

我是这样做的。我从youtube图像中获得了宽高比。

<img id"nnS7G3Y-IDc-img" src="http://i.ytimg.com/vi/nnS7G3Y-IDc/default.jpg" />
<script>
//using jquery
var height = $('#nnS7G3Y-IDc-img').css('height');
var width = $('#nnS7G3Y-IDc-img').css('width');
height = height.replace('px', '');
width = width.replace('px', '');
var arB = height / 3;
var arT = width / arB;
if (arT == 4)   {
    //do what you need to with the aspect ratio info from here
    //just demonstrating with an alert
    alert ("4:3");
}
else {alert ("16:9");}
</script>

我从youtube api中提取所有视频信息,然后事先将所有视频信息存储在数据库中,因此如果您是在动态执行此操作,则可能需要隐藏页面上的图像然后获取方面这样的比例。

编辑**另一种选择,可能是最好的选择,就是使用youtube's api。 搜索视频,并检查是否设置了data-&gt; items-&gt; aspectRatio。我不认为它是在4:3视频上设置的,但是在16:9它被设置为宽屏。应该像if (data->items->aspectRatio) {ratio= "16:9"} else {ratio="4:3"}

一样简单

答案 3 :(得分:1)

宽高比显然取决于质量水平。取自YouTube Docs

Quality level small: Player height is 240px, and player dimensions are at least 320px by 240px for 4:3 aspect ratio.
Quality level medium: Player height is 360px, and player dimensions are 640px by 360px (for 16:9 aspect ratio) or 480px by 360px (for 4:3 aspect ratio).
Quality level large: Player height is 480px, and player dimensions are 853px by 480px (for 16:9 aspect ratio) or 640px by 480px (for 4:3 aspect ratio).
Quality level hd720: Player height is 720px, and player dimensions are 1280px by 720px (for 16:9 aspect ratio) or 960px by 720px (for 4:3 aspect ratio).
Quality level hd1080: Player height is 1080px, and player dimensions are 1920px by 1080px (for 16:9 aspect ratio) or 1440px by 1080px (for 4:3 aspect ratio).
Quality level highres: Player height is greater than 1080px, which means that the player's aspect ratio is greater than 1920px by 1080px.

答案 4 :(得分:0)

也许不是一个好的答案,但似乎在其他答案中假设YouTube视频是16:9或4:3。

但是他们可以拥有非常随意的宽高比,而且肖像手机视频变得非常普遍,对于YouTube上的视频而言,它变得不那么罕见了。

对于这些非标准宽高比,作为一个快速手动软糖,我采用了全屏播放,进行屏幕捕捉和裁剪图像。

我在http://youtube-aspect-ratios.xtra.ink上提供了几个任意方面视频的例子。

答案 5 :(得分:0)

我的目标是获取所有视频的长宽比,而不仅是我拥有的视频。

因此,诀窍是将https://developers.google.com/youtube/v3/docs/videos/listplayer中提供的parts一起使用,然后解析返回的嵌入html的widthheight