Встроенная вставка YouTube не запускается в HD - PullRequest
42 голосов
/ 09 ноября 2011

Я пытаюсь встроить HD-видео YouTube, но независимо от того, что я пытаюсь, кажется, что загружается только версия 480p.

В соответствии с YouTube, встроить HD-видео так же просто, как добавить hd=1 по URL:

<iframe src="//www.youtube.com/embed/{videoId}?hd=1" width="960" height="720"  frameborder="0" allowfullscreen></iframe>

Это, однако, похоже, не работает, по крайней мере, в моей реализации iframe:

<iframe id="video-player" width="960" height="720" src="//www.youtube.com/embed/{videoId}?enablejsapi=1&autoplay=1&rel=0&modestbranding=1&showinfo=0&showsearch=0" frameborder="0" allowfullscreen></iframe>

То же самое вернос API Javascript:

HTML:

<div id="video-player"></div>

JS:

    var player;
    function onYouTubePlayerAPIReady() {
        player = new YT.Player('video-player', {
            height: '720',
            width: '960',
            videoId: '{videoId}',
            playerVars: {
                'controls': 1,
                'autoplay': 1,
                'hd': 1
            },
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }

    function onPlayerReady(event) {
        player.playVideo();
    }

Ответы [ 8 ]

84 голосов
/ 18 сентября 2012

Используйте этот параметр:

VQ = HD1080

Пример:

* * 1010
27 голосов
/ 09 ноября 2011

Согласно этому ответу на форуме поддержки YouTube:

[Встраивание iframe] попытается "оптимизировать" работу и отработает размерыВстраивайте проигрыватель, чтобы выбрать, какое качество воспроизводить его по умолчанию.

Если код для вставки намного меньше , чем 1280x750, например 853x510 или 640x390, он будет воспроизводить 480p или 360p, независимо от того, установлен ли параметр & hd = 1 .

(выделено мной)

Я изменил размеры фрейма на 1280x720 ивидео загружено с разрешением 720p.

Итак, в основном, механизм встраивания iframe интеллектуален и загружает только самое близкое разрешение в соответствии с размером iframe.

7 голосов
/ 03 апреля 2012

Есть трюк, который вы можете сделать.Установите качество через JS.Не гарантируется, но работает на моем сайте (ggreplayz.com):

https://developers.google.com/youtube/js_api_reference#Playback_quality

Пример:

<iframe id="vid2" style="z-index: 1;" width="853" height="505" src="http://www.youtube.com/embed/<?php echo $vid2Array[0];?>?enablejsapi=1&wmode=transparent&hd=1" frameborder="0" allowfullscreen></iframe>

<script type="text/javascript">
...
    function onYouTubePlayerAPIReady() {    
      player1 = new YT.Player('vid1', {
        events: {
          'onReady': onPlayerReady1
        }
      });
...
    function onPlayerReady1(event) { 
        player1.setPlaybackQuality('hd720');
    }
...
5 голосов
/ 19 октября 2012
2 голосов
/ 30 января 2014

Я использую &hd=1&vq=hd720 для достижения этой цели. Он загружает версию 720p, даже если плеер меньше. Я получил эту информацию от этого источника .

1 голос
/ 02 февраля 2014

Потратив более 5 часов на поиск и тестирование всех ответов, приведенный ниже код работает для меня. Использование Xcode 5, iOS 7.0.4 и iPad mini2.

- (void)viewWillAppear:(BOOL)animated
{


NSString *htmlString = @"<html><head>\
<meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = yes, height = 640px, width = 360px\"/></head>\
<body style=\"background:#000;margin-top:0px;margin-left:0px\">\
<iframe id=\"ytplayer\" type=\"text/html\" width=\"640px\" height=\"360px\"\
src=\"http://www.youtube.com/embed/%@?vq=hd1080\"\
frameborder=\"0\"/>\
</body></html>";

htmlString = [NSString stringWithFormat:htmlString,self.videoId, self.videoId];
[self.videoPlayerView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.youtube.com"]];

}

Единственная важная вещь здесь - это соотношение сторон, которое вы устанавливаете в своем iframe ( "width = \" 640px \ "height = \" 360px \ "), которые в основном являются отношениями 1280 * 720. А затем установите тот же размер для вашего UIWebView. Надеюсь, это поможет кому-то.

1 голос
/ 09 марта 2012

Возможно, я немного опоздал, но я только что обнаружил, что он смотрит только на высоту видеоплеера.

Когда я пытаюсь вставить видео шириной 1000px, но высотой всего 408 пикселей (2,35: 1 матовый), выбирается 360p>: |

0 голосов
/ 20 сентября 2015

Шахта не работала вообще.Я попробовал все, включая все эти параметры

&hd=1&vq=hd720&quality=high

Но это не работало, пока я не добавил этот параметр:

&version=3
...