API YouTube, размеры видео или соотношение сторон - PullRequest
0 голосов
/ 29 января 2019

Здесь много слов, так что TL; DR Я ищу способ получить ширину и высоту любого видео YouTube.

У меня самое сложное время, чтобы получить правильное разрешение видео /пропорции видео YouTube с использованием API YouTube.Короче говоря, мне нужно выбранное пользователем видео, чтобы полностью заполнить контейнер для использования в качестве фонового видео, над которым будет висеть контент - чтобы сделать это, потеряв при этом наименьшее количество видео, я должен знать,размеры видео, чтобы я мог масштабировать его и центрировать правильно.

Я возился с большим количеством OAuth Playground (вы, вероятно, также захотите взглянуть на API данных YouTube ), но не могу найти ничего, что действительно дало бы мне размеры видео.Самая близкая вещь, которую я могу найти, которая подходит для НЕКОТОРЫХ видео, но не для всех, - это GET с https://www.googleapis.com/youtube/v3/videos?part=player&id=XJK_uVyTBHc.part = player плюет с большим количеством ненужных мне вещей, плюс немного HTML для встроенного видео iframe.Тег iframe содержит ширину и высоту, но они не всегда корректны.

Например, видео с идентификатором XJK_uVyTBHc возвращает iframe с шириной = "480" и высотой = "360", но при просмотре наYouTube показывает мой Viewport как 406x722px с текущим и оптимальным разрешением как 608x1080px, что примерно такое же соотношение сторон (видео клик правой кнопкой мыши, выберите статистику для ботаников, чтобы увидеть это).Я не проводил очень подробного тестирования, но могу подтвердить, что, по крайней мере, видео с разрешением 1920x1080px ДОЛЖНО возвращаться с тегом iframe, который имеет правильное соотношение сторон в атрибутах width и height.Я предполагаю, что это связано с минимальной высотой и шириной, необходимой для размещения элементов управления YouTube внутри видео, но это не поможет решить мою проблему!: [

Итак, мы находимся в 2019 году ... Нет ли еще хорошего способа получить ширину и высоту видео на YouTube с помощью простого вызова API?Я где-то пропустил конкретную операцию API?Буду признателен за любую помощь или дополнительные ресурсы!

1 Ответ

0 голосов
/ 30 января 2019

Если вы видите исходный код предоставленного вами видео - videoId: XJK_uVyTBHc:

view-source: 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>

Все предыдущие кадры имеют одинаковую ширину и высоту: width="560" и height="315".

Я использовал Google API Explorer для создания демо с videoIds из вышеупомянутых фреймов для получения этих результатов:

{
 "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>"
   }
  }
 ]
}

Все предыдущие результаты API данных YouTube изменяют значения width и height следующим образом:

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

Те же результаты доступны в этой пробной версии , которую я подготовил для вас.

Я также заметил, что "embedWidth"и "embedHeight" не вернулисьrned - возможно, такие поля устарели, но я не смог найти какую-либо документацию по этому поводу.

К сожалению, API данных YouTube вроде ограничен для определенных задач - как эта.

...