Ответ 1
Вы также можете получить его благодаря реализации OEmbed YouTube. Пример:
http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D-UUx10KOWIE&format=xml
format=json
также принимается.
Я пытаюсь получить размер видео на YouTube. Я использую вызов API Gdata для извлечения основных сведений (заголовок, URL-адреса, миниатюры и категории), но я не могу найти размеры видео.
Im встраивание некоторых видеороликов на веб-сайт с помощью серверных запросов API данных YouTube, например: http://gdata.youtube.com/feeds/api/videos/z_AbfPXTKms?0=v&1=2&alt=json. К сожалению, нет достоверной информации о размерах видео (все изображения предварительного просмотра имеют скорость 4/3 даже с широкоэкранными видео).
То, что я пытаюсь выполнить, - это точно подогнать видео в плеер; ширина игрока фиксирована, поэтому мне нужны только оригинальные размеры или, по крайней мере, пропорция.
Есть ли способ получить этот вид данных с помощью API Youtube?
(Мой резервный план - установить размер игрока на 4/3 и никогда не смотреть назад, но любая помощь оценивается!)
Вы также можете получить его благодаря реализации OEmbed YouTube. Пример:
http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D-UUx10KOWIE&format=xml
format=json
также принимается.
Сейчас есть решение: если вы очистите общедоступную страницу видео:
http://www.youtube.com/watch?v=[id]
вы можете видеть теги ширины и высоты открытого графика, например:
<meta property="og:video:width" content="1920">
<meta property="og:video:height" content="1080">
Итак, вы можете получить размеры там: -)
Если вы хотите получить размеры для примера видео из вопроса:
Затем попробуйте этот URL-адрес, используя Noembed:
Он вернет следующий JSON:
{
"version": "1.0",
"title": "まるです。",
"author_name": "mugumogu",
"provider_url": "https://www.youtube.com/",
"width": 459,
"height": 344,
"thumbnail_height": 360,
"type": "video",
"thumbnail_width": 480,
"provider_name": "YouTube",
"url": "https://www.youtube.com/watch?v=z_AbfPXTKms",
"author_url": "https://www.youtube.com/user/mugumogu",
"html": "\n<iframe width=\" 459\" height=\"344\" src=\"https://www.youtube.com/embed/z_AbfPXTKms?feature=oembed\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"></iframe>\n",
"thumbnail_url": "https://i.ytimg.com/vi/z_AbfPXTKms/hqdefault.jpg"
}
Он также поддерживает JSONP для запросов с кросс-началом:
Подробнее см. этот ответ:
Простая демонстрация с использованием jQuery:
var id = 'z_AbfPXTKms';
var url = 'https://www.youtube.com/watch?v=' + id;
$.getJSON('https://noembed.com/embed',
{format: 'json', url: url}, function (data) {
alert('Dimensions: ' + data.width + 'x' + data.height);
});
См. DEMO в JSBin.
Если вы загружаете видео с YouTube, как это, вы можете запускать функцию javascript только после загрузки видео.
<script src="https://www.youtube.com/iframe_api"></script>
<center>
<div class="videoWrapper">
<div id="player"></div>
</div>
</center>
<script>
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
videoId:'xxxxxxxxxxx',playerVars: { controls:0,autoplay:0,disablekb:1,enablejsapi:1,iv_load_policy:3,modestbranding:1,showinfo:0,rel:0,theme:'light' }
} );
resizeHeroVideo();
}
</script>
resizeHeroVideo
вызывается после загрузки видео.
var player = null;
$( document ).ready(function() {
resizeHeroVideo();
} );
$(window).resize(function() {
resizeHeroVideo();
});
function resizeHeroVideo() {
var content = $('#hero');
var contentH = viewportSize.getHeight();
contentH -= 158;
content.css('height',contentH);
if(player != null) {
var iframe = $('.videoWrapper iframe');
var iframeH = contentH - 150;
if (isMobile) {
iframeH = 163;
}
iframe.css('height',iframeH);
var iframeW = iframeH/9 * 16;
iframe.css('width',iframeW);
}
}
а затем мы вычисляем размеры, чтобы поддерживать его положение в центре страницы, придерживаясь соответствующего соотношения сторон 16: 9.
Следуя решению Isra. Да, похоже, что youtube не разработал свой код OEmbed API, так как videoFrameSize возвращает 470 x 270 пикселей. Но, как минимум, это дает вам что-то, что GRAB держит динамически!
Используя метод suck it as, который предлагает "Ли Тейлор", это способ KISS для достижения этого, но не идеальный, если вам нужен динамический контент.
OK - учитывая неточные размеры, предоставляемые oEmbed, это обеспечивает решение.
В настоящее время я разрабатываю генератор strusturedData для видеоконтента в галерее, все связанные с видео youTube.
Вот неточный способ получения Dimension из youtube, но в меньшей степени его данные!
Как получить размер видео с youtube.
Этап 1: Вызовите данные oEmbed из youtube::
$video_id = "your youtube videos unique ID number ";
$oEmbed = simplexml_load_file('http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v=' . $video_id . '&format=xml');
Этап 2:
$data['height'] = $oEmbed->height;
$data['width'] = $oEmbed->width;
$data['videoFrameSize'] = $oEmbed->height . "x" . $oEmbed->width . "px";
Этап 3:
используйте переменные в вашей кодировке, так как вам лучше всего использовать::