Я хотел бы получить соотношение сторон видео YouTube, чтобы соответственно изменить размер игрока. Я программирую YT-плеер с помощью JavaScript.
Как получить соотношение сторон видео YouTube
Ответ 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.