YouTube iframe embed не запускается в HD

Я пытаюсь встроить видео 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>

то же самое верно и для Javascript API:

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


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

качестве звука VQ=hd1080 при работе

пример:

<iframe src="https://www.youtube-nocookie.com/embed/SzTdgE04uA8?vq=hd1080" width="853" height="480"></iframe>

по состоянию на ответ на форуме поддержки YouTube:

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

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

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

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

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


есть трюк, который вы можете сделать. Установите качество через 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');
    }
...


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


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

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


потратив более 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 ( "ширина=\" 640px\ "высота=\" 360px\"), которые в основном являются коэффициентами 1280*720. А затем установите тот же размер для вашего UIWebView. Надеюсь, это поможет кому-то.


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

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

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

&version=3