Как получить соотношение сторон видео YouTube

Я хотел бы получить соотношение сторон видео YouTube, чтобы соответственно изменить размер игрока. Я программирую YT-плеер с помощью JavaScript.

Ответ 1

Единственное место, где отображаются точные размеры видео в вызове API данных, - это когда вы вызываете video.list(part = fileDetails, id = VIDEO_ID), используя API v3, при этом аутентифицируется как владелец видео. Он вернулся в свойство video.fileDetails.videoStreams []. AspectRatio. Это не особенно полезно, поскольку для получения этой информации вам необходимо пройти аутентификацию как владельца видео.

Если у вас есть веб-страница и вы хотите сделать JSONP звонок, чтобы получить подсказку о том, является ли данное видео 16: 9 или 4: 3, вы можете сделать это через что-то вроде

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

например.

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

Я предлагаю нанести удаленный url:

https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v= {videoID} & format = json

Это дает вам точные размеры видео для общедоступных видео. Хотя я не уверен в частных видео. Он также вернет размеры миниатюр, которые кажутся разными в некоторых случаях, поэтому просто не используйте их.

Ответ 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>

Я извлекаю всю видеоинформацию из apt youtube, а затем сохраняю всю видеоинформацию в базе данных заранее, поэтому, если вы делаете это "на лету", вам может потребоваться скрыть изображение на странице, а затем получить аспект таким образом.

edit ** Другой вариант и, вероятно, лучший, - использовать youtube api. Найдите видео и проверьте, установлены ли данные- > items- > aspectRatio. Я не думаю, что он установлен на 4: 3 видео, но в 16: 9 он установлен на широкоэкранный. Должно быть так же просто, как if (data->items->aspectRatio) {ratio= "16:9"} else {ratio="4:3"}

Ответ 4

Соотношение сторон, по-видимому, зависит от уровня качества. Из Документов YouTube:

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 aspect ratio is greater than 1920px by 1080px.

Ответ 5

Возможно, это не очень хороший ответ, но, похоже, среди других ответов есть предположение, что видео на YouTube - это 16: 9 или 4: 3.

Но у них может быть довольно произвольное соотношение сторон, и с видеороликами с портретным телефоном, которые стали довольно распространенными, становится менее редким для видео на YouTube, чтобы быть чем-то другим.

Для этих нестандартных пропорций, в качестве быстрой ручной выдумки, я прибегал к их воспроизведению в полноэкранном режиме, выполнению захвата экрана и обрезке изображения вниз.

Я привел несколько примеров произвольных видеороликов в http://youtube-aspect-ratios.xtra.ink.

Ответ 6

Моя цель состояла в том, чтобы получить соотношение сторон для любого видео, а не только для тех, для которых я являюсь владельцем.

Таким образом, трюк заключается в использовании https://developers.google.com/youtube/v3/docs/videos/list с player предоставленным в parts а затем синтаксического разбора width и height возвращаемого встроенного html.