web-dev-qa-db-fra.com

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

J'essaie d'intégrer une vidéo HD YouTube sur YouTube, mais peu importe ce que j'essaie, elle ne semble que charger la version 480p.

Selon YouTube, incorporer une vidéo HD est aussi simple que d’ajouter hd=1 à l’URL:

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

Cela ne semble toutefois pas fonctionner, du moins dans mon implémentation de la variable 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>

La même chose est vraie 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();
    }
42
Chad Levy

Utilisez ce paramètre:

vq = hd1080

Exemple:

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

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

[L'iframe incorporé] tentera "d'optimiser" l'expérience et fonctionnera des dimensions du lecteur intégré pour choisir quelle qualité jouer il revient à par défaut.

Si l'incorporation est beaucoup plus plus petiteque 1280x750, telle que 853x510 ou 640x390, la lecture sera 480p ou 360p, que le paramètre & hd = 1 soit défini ou non.

(C'est moi qui souligne)

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

Donc, fondamentalement, le mécanisme d’incorporation d’iframe est intelligent et ne charge que la résolution la plus proche en fonction de la taille de l’iframe.

27
Chad Levy

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

J'utilise &hd=1&vq=hd720 pour y parvenir. Il charge la version 720p même si le lecteur est plus petit. J'ai eu cette information de cette source .

2
Patartics Milán

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>: |

1
Julian

Après avoir passé plus de 5 heures à chercher et à tester toutes les réponses, le code ci-dessous me convient . Utilisation de Xcode 5, iOS 7.0.4 et 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"]];

}

La seule chose importante ici est le rapport de format que vous définissez dans votre iframe ( "width = \" 640px\"height = \" 360px\"), qui sont fondamentalement les rapports de 1280 * 720. la même taille pour votre UIWebView. J'espère que cela aidera quelqu'un. 

1
Siavash Alp

Le mien ne fonctionnait pas du tout. J'ai tout essayé, y compris tous ces paramètres

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

Mais cela n'a pas fonctionné jusqu'à ce que j'ajoute ce paramètre:

&version=3
0
supersan