这里有很多字,所以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操作?任何帮助或其他资源将不胜感激!
答案 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的搜索结果,其width
和height
的值如下:
width="480"
和 height="270"
。width="480"
和 height="360"
。在我为您准备的"try-it"演示中,可以得到相同的结果。
我还注意到未返回“ embedWidth
”和“ embedHeight
”-也许不推荐使用此类字段,但我无法找不到任何相关文档。
不幸的是,YouTube数据API在某些任务(例如这样的任务)中受到了种的限制。