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();
}
このパラメーターを使用:
vq = hd1080
例:
<iframe src="https://www.youtube-nocookie.com/embed/SzTdgE04uA8?vq=hd1080" width="853" height="480"></iframe>
YouTubeサポートフォーラムの この回答 に従って:
[iframe埋め込み]は、エクスペリエンスを「最適化」しようとし、埋め込みプレーヤーのサイズに応じて、デフォルトで再生する品質を選択します。
埋め込みが853x510や640x390のように1280x750よりもはるかに小さいより小さいの場合、480pまたは360pを再生します。&パラメータが設定されています。
(エンファシス鉱山)
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バージョンをロードします。 this source からこの情報を得ました。
少し遅れるかもしれませんが、ビデオプレーヤーの高さだけが見えることに気付きました。
幅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で設定するアスペクト比("width = \" 640px\"height = \" 360px\")です。これは基本的に1280 * 720の比率です。そして、UIWebViewに同じサイズを設定します。
私はまったく働いていませんでした。これらすべてのパラメーターを含むすべてを試しました
&hd=1&vq=hd720&quality=high
しかし、このパラメーターを追加するまで機能しませんでした。
&version=3