web-dev-qa-db-ja.com

YouTube iframe埋め込みが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();
    }
42
Chad Levy

このパラメーターを使用:

vq = hd1080

例:

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

YouTubeサポートフォーラムの この回答 に従って:

[iframe埋め込み]は、エクスペリエンスを「最適化」しようとし、埋め込みプレーヤーのサイズに応じて、デフォルトで再生する品質を選択します。

埋め込みが853x510や640x390のように1280x750よりもはるかに小さいより小さいの場合、480pまたは360pを再生します。&パラメータが設定されています。

(エンファシス鉱山)

Iframeのサイズを1280x720に変更し、ビデオを720pの解像度でロードしました。

そのため、基本的にiframe埋め込みメカニズムはインテリジェントであり、iframeのサイズに応じて最も近い解像度のみを読み込みます。

27
Chad Levy

できるトリックがあります。 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');
    }
...
7
rynop
5
luissquall

私が使う &hd=1&vq=hd720それを達成するため。プレーヤーが小さい場合でも、720pバージョンをロードします。 this source からこの情報を得ました。

2

少し遅れるかもしれませんが、ビデオプレーヤーの高さだけが見えることに気付きました。

幅1000pxのビデオを埋め込もうとすると、高さが408ピクセル(2.35:1マット)しかなく、360pを選択します>:|

1
Julian

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
Siavash Alp

私はまったく働いていませんでした。これらすべてのパラメーターを含むすべてを試しました

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

しかし、このパラメーターを追加するまで機能しませんでした。

&version=3
0
supersan