YouTube iframeembedded不以HD开始

我试图embedded一个高清YouTubevideo,但无论我尝试,似乎只加载480p版本。

根据YouTube的说法,embedded高清video就像在url中joinhd=1一样简单:

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

然而,这似乎并没有工作,至less在我的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(); } 

使用这个参数:

VQ = HD1080

例:

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

根据YouTube支持论坛上的这个答案 :

[iframeembedded]将尝试“优化”体验,并且将在embedded播放器的尺寸上工作,以select默认播放的质量。

如果embedded比1280×750小得多,例如853×510或640×390,则无论是否设置了&hd = 1参数,它都将播放480p或360p。

(强调我的)

我将iframe的尺寸更改为1280×720,并以720p分辨率加载video。

所以,iframeembedded机制基本上是智能的,只能根据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参数已被弃用: https : //developers.google.com/youtube/player_parameters#Deprecated_Parameters

我使用&hd=1&vq=hd720来达到这个目的。 即使玩家较小,也会加载720p版本。 我从这个来源得到这个信息。

我可能会晚一点,但我发现它只是看着video播放器的高度。

当我试图embedded1000px宽的video,但只有408像素高(2.35:1无光泽)时,它会select360p>:|

花了超过5小时的search和testing所有的答案,下面的代码为我工作。 使用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。希望这可以帮助别人。

我的工作根本不工作。 我尝试了所有这些参数

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

但是直到我添加了这个参数,它才起作用:

 &version=3