it-swarm.com.de

YouTube-iframe-Einbettung startet nicht in HD

Ich versuche, ein HD-YouTube-Video einzubetten, aber egal, was ich versuche, es scheint immer nur die 480p-Version zu laden.

Laut YouTube ist das Einbetten eines HD-Videos so einfach wie das Hinzufügen von hd=1 zur URL:

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

Dies scheint jedoch zumindest in meiner Implementierung der iframe nicht zu funktionieren:

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

Gleiches gilt für die 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

Verwenden Sie diesen Parameter:

vq = hd1080

Beispiel:

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

Laut diese Antwort im YouTube-Supportforum:

[Die iframe-Einbettung] versucht, das Erlebnis zu "optimieren", und arbeitet an den Dimensionen des eingebetteten Players, um zu bestimmen, in welcher Qualität er standardmäßig wiedergegeben werden soll.

Wenn die Einbettung viel kleiner als 1280x750 ist, z. B. 853x510 oder 640x390, wird 480p oder 360p wiedergegeben, unabhängig davon, ob & hd = 1 ist Parameter wird gesetzt.

(Betonung meiner)

Ich habe die Abmessungen des iFrames auf 1280x720 geändert und das Video mit einer Auflösung von 720p geladen.

Grundsätzlich ist der iframe-Einbettungsmechanismus also intelligent und lädt nur die nächstgelegene Auflösung entsprechend der Größe des iframe.

27
Chad Levy

Es gibt einen Trick, den Sie machen können. Stellen Sie die Qualität über JS ein. Es ist nicht garantiert, funktioniert aber auf meiner Website (ggreplayz.com):

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

Beispiel:

<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

Ich benutze &hd=1&vq=hd720, um das zu erreichen. Die 720p-Version wird auch dann geladen, wenn der Player kleiner ist. Ich habe diese Informationen aus dieser Quelle erhalten.

2

Ich bin zwar etwas spät dran, aber ich habe gerade festgestellt, dass nur die Höhe des Videoplayers angezeigt wird.

Wenn ich versuche, ein Video mit einer Breite von 1000 Pixeln einzubetten, jedoch nur 408 Pixel hoch (2,35: 1 Matte), wird 360p>: |

1
Julian

Nachdem Sie mehr als 5 Stunden mit dem Durchsuchen und Testen aller Antworten verbracht haben, funktioniert der folgende Code für mich ... _.

- (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"]];

}

Wichtig ist hier nur das Seitenverhältnis, das Sie in Ihrem iframe einstellen ( "width =" 640px "height =" 360px "), was im Grunde die Verhältnisse von 1280 * 720 sind. Und dann eingestellt die gleiche Größe für Ihr UIWebView. Hoffe, helfen Sie jemandem. 

1
Siavash Alp

Meines hat überhaupt nicht funktioniert. Ich habe alles probiert, einschließlich all dieser Parameter

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

Aber es hat nicht funktioniert, bis ich diesen Parameter hinzugefügt habe:

&version=3
0
supersan