YouTube iFrame API "setPlaybackQuality" oder "suggestedQuality" funktioniert nicht
Ich habe einige Schwierigkeiten einstellen der Bildqualität-Einstellungen auf einem video über die Youtube-iFrame-API. Das ist mein code:
var player;
player = new YT.Player('player', {
height: '490',
width: '725',
videoId: yturl,
/* setPlaybackQuality: 'hd720', <-- DOES NOT WORK */
/* suggestedQuality: 'hd720', <-- DOES NOT WORK */
events: {
'onReady': onPlayerReady
}
});
function onPlayerReady(event) {
player.setPlaybackQuality('hd720'); //<-- DOES NOT WORK
event.target.setPlaybackQuality('hd720'); //<-- DOES NOT WORK
player.setVolume(100); //<-- DOES WORK
console.log(player.getPlaybackQuality()); //<-- Prints 'small' to console
event.target.playVideo();
}
Das lustige an der Sache ist, dass mein Aufruf player.setPlaybackQuality
oder event.target.setPlaybackQuality
gibt keine Fehler. Es sieht aus, als ob der Spieler ignoriert es. Ein Aufruf, sagen wir, player.setSuggestedQuality
(eine Funktion, die nicht vorhanden ist) ein Fehler ausgelöst, wie erwartet.
Habe ich versucht, alle gültigen string-Parameter als wie in der API-Referenz ("Mittel", "groß", "hd720", etc.). Keiner von Ihnen arbeiten.
Jemand irgendwelche Vorschläge, wie ich soll, um diese Eigenschaft festzulegen?
InformationsquelleAutor der Frage o01 | 2012-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das exakt gleiche problem und die Problemumgehung.
Ich denke, was passiert ist, dass YouTube ist nur so dass die Qualität auf der Grundlage der tatsächlichen Größe des Displays, so dass, wenn Sie Ihre video-720px groß Sie können nicht standardmäßig auf 720p, bevor es tatsächlich zu spielen. Dann kontrolliert der Anwender kick und YouTube aufhört, wird dick.
EDIT
Einfach auf einen Durchbruch:
Wenn Sie Ereignis 3 (buffering) anstatt von Ereignis 5 (spielen) es gibt kein Stottern für den Benutzer. Qualität wird verändert, sobald es beginnt zu laden. Einzige seltsame Sache ist, dass Sie brauchen, um es in onPlayerReady als gut oder es funktioniert nicht.
InformationsquelleAutor der Antwort Jedka
Fand eine mögliche hack/Lösung.
Wenn ich warte, bis das video begonnen hat zu spielen, dann gelten
setPlaybackQuality
- es funktioniert. So:Aber die Lösung ist nicht ideal, wie das video beginnt zuerst zum Puffer auf eine niedrigere Qualität - wechseln Sie dann auf 720, sobald es zu spielen beginnt. Irgendwelche Kommentare oder alternativen Lösungen, werden geschätzt.
InformationsquelleAutor der Antwort o01
Problem ist YouTube wählt die am besten geeignete Wiedergabe Qualität, so überschreibt es
setPlaybackQuality()
imonPlayerReady()
Funktion.Habe ich eine Lösung gefunden, um die Kraft der YouTube-player spielen Sie in einer Qualität, die Sie sich wünschen, egal, die Breite und Höhe des players:
Den code sichert die Qualität ändern, ist die empfohlene.
Beachten Sie: der Benutzer konnte nicht ändern Sie die video-Qualität mit den player-button mit diesem code.
Sowieso, Sie zwingen könnte die vorgeschlagene Qualität nur einmal.
Getestet in GChrome, Firefox und Safari.
InformationsquelleAutor der Antwort jonalvarezz
ich habe eine Lösung gefunden, die funktioniert perfekt für mich:
InformationsquelleAutor der Antwort user3164028
Habe ich ein wenig gespielt mit dieser Funktion und
setPlaybackQuality
imonPlayerReady
funktioniert.Das problem ist nur, dass die Zuordnung nicht sofort, in der Tat
getPlaybackQuality
ist wieder der richtige Wert nur, nachdem das video gestartet ist. Eigentlich, bevor das video gestartet wirdgetPlaybackQuality
zurück immersmall
. Aber sobald das video startet, ist mit der richtigen playBackQuality.Habe ich auch versucht, mit verschiedenen player-Größe-Kombinationen und es funktioniert sogar.
Hinweis:
Ich bin mit IFrame-API.
InformationsquelleAutor der Antwort sirLisko
andere Lösung, stop-video und verwenden Sie
seekTo()
. für live-streaming können Sie überspringenseekTo()
. Die schlechte, es wird sich zeigen, die Pufferung aber das gute ist, Sie haben die volle Kontrolle, egal was die Größe des players.InformationsquelleAutor der Antwort uingtea