HTML5 Video-gepufferte Attributfunktionen
Ich bin der Gestaltung einer benutzerdefinierten HTML5
video-player. So, es wird seine eigene, benutzerdefinierte Schieberegler, um imitieren die video-Fortschritte, so dass ich brauchen, um zu verstehen, das gesamte Pufferung shebang einer HTML5
video.
Stieß ich auf diesen Artikel: Video-Buffering. Es sagt, dass die gepufferten Objekt besteht aus mehreren Zeitbereichen in der linearen Reihenfolge der Startzeit. Aber ich konnte Folgendes herausfinden:
-
Sagen, das video beginnt. Weiter geht es bis 1:45 auf die eigene (gelegentlich Abwürgen vielleicht, warten auf weitere Daten), nach dem ich plötzlich springen zum 32:45. Jetzt, nach einiger Zeit, wenn ich zurück springen, um 1:27 (in den Zeit-Bereich zunächst geladen und durchgespielt, bevor ich den absprung geschafft), wird es anfangen zu spielen sofort, da es bereits geladen wurde, bevor? Oder ist es, da machte ich einen Sprung, der Teil ist verloren und werden neu geholt? So oder so, ist das Verhalten konsistent für solche Szenarien?
-
Sagen, dass ich 5 oder 6 solcher Sprünge, jedes mal zu warten, für ein paar Sekunden Daten laden nach dem Klick. Bedeutet das, dass das
buffered
Objekt wird über alle diese Zeiträume gespeichert? Oder könnten einige verloren gehen? Ist es ein Stapel-Art der Sache, wo die früheren Bereiche erhalten tauchte ab, als mehr Bereiche geladen aufgrund der weiter springt? -
Wird prüfen, ob die
buffered
Objekt hat einen Zeitraum beginnend bei 0 (vergessen live streaming) und endet an der video-Dauer Länge sicherzustellen, dass die gesamte video-Ressource geladen wurde voll? Wenn nicht, gibt es eine Möglichkeit zu wissen, dass das gesamte video heruntergeladen wurde, und jeder Teil ist seekable, aus dem video spielen können kontinuierlich bis zu Ende ohne einen Augenblick Verzögerung?
Den W3C-Spezifikationen sind nicht sehr klar, und ich habe auch nicht finden können, ein entsprechend großes (sagen wir mehr als eine Stunde), remote-video-Ressource zu testen.
InformationsquelleAutor der Frage SexyBeast | 2013-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie das video gepuffert ist browser-Implementierung abhängig und deshalb möglicherweise von browser zu browser variieren.
Verschiedenen Browsern können verschiedene Faktoren bestimmen, zu halten oder zu verwerfen, ein Teil des Puffers. Alte Segmente, Festplattenspeicher, Arbeitsspeicher und Leistung sind typische Faktoren.
Der einzige Weg, wirklich wissen, ist, zu "sehen", was der browser oder laden.
Dazu habe ich aus einem Puffer-viewer, die zeigt, welcher Teil in den Puffer. Der viewer zeigt die aktuellen und alle Teile des ganzen Puffer:
ONLINE-PUFFER-VIEWER
Beispielsweise in Chrom, spielte ich ein paar Sekunden, dann habe ich übersprungen, um etwa 30 Sekunden, und Sie können sehen, dass es beginnt zu laden, ein anderer Teil ab, die position.
(Die Puffer scheinen auch begrenzt werden, um key-frames, so ist es möglich, die zum decodieren des n-frames in die Puffer. Dies bedeutet, dass die Puffer können beginnen, Daten zu laden, ein wenig vor dem tatsächlichen position).
Lieferte ich ein demo-video über 1 minute lang ist dieses jedoch nicht lange genug, um eine ordnungsgemäße Prüfung. Gratis kostenlos zu liefern video-links enthalten, mehr Videos (oder bitte teilen, wenn Sie wollen, dass ich zum update der demo mit diesem).
Die main-Funktion iteriert durch die
buffered
Objekt auf dem video-element. Machen wird es alle Teile, die existiert, um die Leinwand unten rechts das video zeigt in rot.Können Sie auf (nicht ziehen) auf diesem viewer bewegen Sie das video auf verschiedenen Positionen.
InformationsquelleAutor der Antwort epistemex
Laut
den
buffered
Attribut enthält Informationen über alle derzeit gepuffert Zeit reicht. Nach meinem Verständnis, wenn eine gepufferte Teil ist verloren, es ist entfernt von dem Objekt (falls das jemals passiert).Esepcially der Letzte link scheint sehr hilfreich für das Verständnis der Materie (denn es bietet ein code-Beispiel), aber halten Sie im Verstand dies sind die mozilla-Dokumente und Unterstützung kann unterschiedlich sein in anderen Browsern.
Ihre Fragen zu beantworten
Es sollte sofort spielen, wenn Sie zurück springen, es sei denn, die Puffer, die Teil entladen wurde. Ich denke, es ist sehr vernünftig anzunehmen, dass die Puffer oder Puffer-Bereiche entladen werden, irgendwann, wenn die gesamte Puffergröße überschreitet eine bestimmte Menge.
Ja, alle gepufferten Bereiche sollten gut lesbar sein, die durch das Attribut.
Ja, das ist das code-Beispiel in dem letzten link. Anscheinend ist dies eine geeignete Methode zur Feststellung, ob das gesamte video geladen wurde.
InformationsquelleAutor der Antwort Cobra_Fast
Fast jeder browser speichert die gepufferten Daten in den cache für diese Sitzung. Der cache abgelaufen ist, nachdem der Benutzer geht Weg von dieser Seite. Ich glaube nicht, dass der Benutzer die Seite zu laden jedes mal, wenn er lädt das video aus einem Punkt, wo das video geladen wurde. Der Benutzer wird Gesicht dieses Problem nur dann, wenn auf dem server löschen alle cache-Daten. HTML5-video-tag unterstützen Sie diese, und speichern Sie das video bis zu dem Punkt, bis wo es geladen wurde.
Es doesnot bedeuten, dass die session verloren gegangen ist, bedeutet dies, dass entweder das Objekt (wenn Sie flash-player) ist auf der Suche nach einigen Daten von diesem bestimmten Punkt oder das html5-video-tag hat einige Probleme, weil entweder der Fehler der INTERNET-Verbindung, oder eine andere server-Fehler.
Die Metadaten werden automatisch geladen, bis Sie diese
<audio preload="none"...
dadurch wird der browser nicht herunterladen, um alles vom server, Sie können es verwenden, wie:<audio preload="auto|metadata|none"...
Wenn Sie keine, nichts heruntergeladen, es sei denn, der Benutzer klickt auf die Schaltfläche spielen und Metadaten herunterladen, Namen -, timing-und andere meta-Daten werden vom server, nicht aber die Datei irgendwie automatisch wird starten Sie den Download, sobald die Seite geladen wird.Ich werde immer finden Sie, Lesen Sie einige Dokumentationen von jQuery. Als die jQuery lassen, Sie ändern und aktualisieren Sie die Inhalte, die mit ajax-API und hilfsbereit zu. Hoffen, dass Sie Erfolg haben! Cheers.
InformationsquelleAutor der Antwort Afzaal Ahmad Zeeshan
Obwohl die akzeptierte Antwort, die Beschreibung ist ausgezeichnet, habe ich beschlossen, aktualisieren Sie die code-sample-aus mehreren Gründen:
progress
Veranstaltung.document.getElementById()
.for()
Schleife war eleganter als eine rückwärtswhile()
Schleife.Beachten Sie, dass ich entfernt haben Sie die Abspielposition und timestamp zu halten den code sauber zu sein, wie diese Antwort konzentriert sich rein auf die Visualisierung der video-Puffer.
LINK ZUM ONLINE-VIDEO-PUFFER-VISUALISER
Umschreiben akzeptierte Antwort ist
loop()
Funktion:InformationsquelleAutor der Antwort Jamie Birch