42 votes

Iframe YouTube intégré ne commençant pas en HD

Je suis en train d'intégrer un HD vidéo de YouTube, mais peu importe ce que j'essaie, il ne semble jamais de charger la version 480p.

Selon YouTube, l'incorporation d'une vidéo HD est aussi simple que l'ajout d' hd=1 à l'URL:

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

Ceci, cependant, ne semble pas être de travail, au moins dans mon de la mise en œuvre de l' 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>

Le même est vrai avec l'API Javascript:

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();
    }

85voto

Benny Neugebauer Points 5393

Utilisez ce paramètre:

vq = hd1080

Exemple:

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

27voto

Chad Levy Points 3333

Selon cette réponse sur YouTube, le forum de support:

[L'iframe embed] va tenter, pour "optimiser" l'expérience et de travail hors de les dimensions de l'intégrer au joueur de choisir ce qu'est la qualité de jeu de retour par défaut.

Si l'intégration est beaucoup plus petit que 1280x750, comme 853x510 ou 640x390, il va jouer en 480p ou 360p, indépendamment du fait que l' &hd=1 paramètre est réglé.

(L'emphase est mienne)

J'ai changé les dimensions de l'iframe à 1280 x 720 et la vidéo chargée à une résolution de 720p.

Donc, en gros, l'iframe intégrer mécanisme est intelligent et ne charge que le plus proche de la résolution en fonction de la taille de l'iframe.

7voto

rynop Points 7818

Il y a une astuce que vous pouvez faire. Réglez la qualité via JS. Ce n'est pas garanti, mais fonctionne sur mon site (ggreplayz.com):

https://developers.google.com/youtube/js_api_reference#Playback_quality

Exemple:

 <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');
    }
...
 

1voto

Julian Points 11

Je suis peut-être un peu en retard, mais je viens de découvrir qu'il ne regarde que la hauteur du lecteur vidéo.

Lorsque j'essaie d'intégrer une vidéo de 1000 pixels de large mais de 408 pixels de haut (format 2,35: 1 mat), elle sélectionne 360p>: |

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X