YouTube iframe嵌入式无法以高清格式启动

Cha*_*evy 42 embed youtube iframe youtube-api

我正在尝试嵌入高清YouTube视频,但无论我尝试什么,它似乎只能加载480p版本.

据YouTube称,嵌入高清视频就像添加hd=1到网址一样简单:

<iframe src="//www.youtube.com/embed/{videoId}?hd=1" width="960" height="720"  frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

然而,这似乎并没有起作用,至少在我的实现中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>
Run Code Online (Sandbox Code Playgroud)

Javascript API也是如此:

HTML:

<div id="video-player"></div>
Run Code Online (Sandbox Code Playgroud)

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();
    }
Run Code Online (Sandbox Code Playgroud)

Ben*_*uer 85

使用此参数:

VQ = HD1080

例:

<iframe src="https://www.youtube-nocookie.com/embed/SzTdgE04uA8?vq=hd1080" width="853" height="480"></iframe>
Run Code Online (Sandbox Code Playgroud)

  • 对于那些想知道的人,尽管参数没有出现在谷歌的支持列表或不推荐的列表中,但这仍然在一年之后仍然有效. (4认同)

Cha*_*evy 27

根据YouTube支持论坛上的回答:

[iframe嵌入]将尝试"优化"体验,并将根据嵌入播放器的尺寸进行操作,以选择默认情况下播放的质量.

如果嵌入很多比1280x750,如853x510或640x390,就会起到480P或360P,不管&HD = 1个是否参数设置.

(强调我的)

我将iframe的尺寸更改为1280x720,并以720p分辨率加载视频.

因此,基本上iframe嵌入机制是智能的,只根据iframe的大小加载最接近的分辨率.

  • 将"vq = hd720"添加到URL即可,即使iframe的尺寸较小.720p流的缩小版本看起来通常比原生360p或480p版本更好,而且音频也更好. (43认同)
  • @annie是的.做到了 (2认同)
  • 仅适用于Firefox,不适用于Chrome或IE10.:-( (2认同)

ryn*_*nop 7

你可以做一个技巧.通过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');
    }
...
Run Code Online (Sandbox Code Playgroud)