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();
}
Utilisez ce paramètre:
vq = hd1080
Exemple:
<iframe src="https://www.youtube-nocookie.com/embed/SzTdgE04uA8?vq=hd1080" width="853" height="480"></iframe>
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.
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');
}
...
Le paramètre hd
est obsolète: https://developers.google.com/youtube/player_parameters#Deprecated_Parameters
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 .
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>: |
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.
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