YouTube API,视频尺寸或长宽比

时间:2019-01-29 18:59:34

标签: javascript youtube youtube-data-api youtube-javascript-api

这里有很多字,所以TL; DR我正在寻找一种方法来获取给定YouTube视频的宽度和高度。

使用YouTube API从YouTube视频中获得正确的视频分辨率/长宽比绝对是最困难的时间。长话短说,我需要一个用户选择的视频来完全填充一个容器,以用作内容将要悬停的背景视频-为了做到这一点,同时又使丢失的视频量最少,我需要知道视频的尺寸,以便我可以放大并正确居中。

我摆弄了OAuth Playground的大量内容(您可能还想看看YouTube Data API),但似乎找不到任何能真正给我看视频尺寸的东西。我可以找到最适合某些视频(但不是全部)的最正确的方法是使用https://www.googleapis.com/youtube/v3/videos?part=player&id=XJK_uVyTBHc进行GET。 part = player吐出很多我不想要的东西,外加一些HTML来嵌入iframe视频。 iframe广告代码包含宽度和高度,但这并不总是正确的。

例如,ID为XJK_uVyTBHc的视频返回一个宽度为“ 480”,高度为“ 360”的iframe,但是在YouTube上观看时,它显示的视口为406x722px,当前和最佳分辨率为608x1080px,大致相同的长宽比(右键单击视频,为书呆子选择统计信息即可看到此信息)。我尚未进行过广泛的测试,但可以确认至少具有1920x1080px分辨率的视频会带iframe标签返回,该iframe标签在width和height属性上具有正确的宽高比。我认为这是由于YouTube控件必须适合视频的最小高度和宽度,但这对我的问题没有帮助! :[

那么,我们到了2019年...仍然没有一种简单的API调用来获取YouTube视频的宽度和高度的好方法吗?我是否忽略了某个地方的特定API操作?任何帮助或其他资源将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您看到提供的视频的源代码-videoId XJK_uVyTBHc

  

查看来源: https://www.youtube.com/watch?v= XJK_uVyTBHc

您将看到一段这样的代码:

fmt_list":"22\/406x720...

我认为这是您所寻找的价值。正如您提到的,API返回iframe,这些值与YouTube网站上显示的值不同。


进行更多测试,我只是随机选择了一些视频,并通过点击(共享)按钮>,获得了iframe “具有YouTube提供的设置” -“插入视频”:

Microsoft Windows Mixed Reality update | October 2018:    
<iframe width="560" height="315" src="https://www.youtube.com/embed/00vnln25HBg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Test Video Please Ignore - this is your sample video:    
<iframe width="560" height="315" src="https://www.youtube.com/embed/XJK_uVyTBHc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

The Rasmus - In the Shadows [Crow Version] (Official Video):    
<iframe width="560" height="315" src="https://www.youtube.com/embed/7gwO8-oqwFw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Super Street Fighter IV Hakan Trailer:    
<iframe width="560" height="315" src="https://www.youtube.com/embed/m6uxFzaB4sE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>    

lofi hip hop radio - beats to relax/study to:    
<iframe width="560" height="315" src="https://www.youtube.com/embed/hHW1oY26kxQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

所有以前的iframe都具有相同的宽度和高度: width="560" height="315"

我使用Google API Explorer通过上述iframe中的 videoIds 创建了demo,以获取以下结果:

{
 "items": [
  {
   "snippet": {
    "title": "Microsoft Windows Mixed Reality update | October 2018"
   },
   "contentDetails": {
    "dimension": "2d"
   },
   "player": {
    "embedHtml": "<iframe width=\"480\" height=\"270\" src=\"//www.youtube.com/embed/00vnln25HBg\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   }
  },
  {
   "snippet": {
    "title": "Test Video Please Ignore"
   },
   "contentDetails": {
    "dimension": "2d"
   },
   "player": {
    "embedHtml": "<iframe width=\"480\" height=\"360\" src=\"//www.youtube.com/embed/XJK_uVyTBHc\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   }
  },
  {
   "snippet": {
    "title": "The Rasmus - In the Shadows [Crow Version] (Official Video)"
   },
   "contentDetails": {
    "dimension": "2d"
   },
   "player": {
    "embedHtml": "<iframe width=\"480\" height=\"360\" src=\"//www.youtube.com/embed/7gwO8-oqwFw\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   }
  },
  {
   "snippet": {
    "title": "Super Street Fighter IV Hakan Trailer"
   },
   "contentDetails": {
    "dimension": "2d"
   },
   "player": {
    "embedHtml": "<iframe width=\"480\" height=\"270\" src=\"//www.youtube.com/embed/m6uxFzaB4sE\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   }
  },
  {
   "snippet": {
    "title": "lofi hip hop radio - beats to relax/study to"
   },
   "contentDetails": {
    "dimension": "2d"
   },
   "player": {
    "embedHtml": "<iframe width=\"480\" height=\"270\" src=\"//www.youtube.com/embed/hHW1oY26kxQ\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   }
  }
 ]
}

以前所有来自YouTube数据API的搜索结果,其widthheight的值如下:

  • width="480" height="270"
  • width="480" height="360"

在我为您准备的"try-it"演示中,可以得到相同的结果。

我还注意到未返回“ embedWidth ”和“ embedHeight ”-也许不推荐使用此类字段,但我无法找不到任何相关文档。

不幸的是,YouTube数据API在某些任务(例如这样的任务)中受到了的限制。