Ich habe ein qualitativ hochwertiges Video, das ich nicht zu sehr komprimieren kann, da es die Grundlage für viele Bildanalysen sein wird, bei denen jeder Frame neu in die Leinwand gezeichnet und dann manipuliert wird.
Ich versuche, die ganze Sache vorher zu laden, bevor ich es spiele, da ich das Video nicht anhalten, puffern und fortsetzen kann. Gibt es ein Ereignis, das ich abhören kann, was bedeutet, dass das gesamte Video bereits geladen ist, bevor ich mit der Wiedergabe beginne?
So mache ich es in JS / jQuery:
%Vor% canplaythrough
ist das Ereignis, das ausgelöst werden soll, wenn genügend Daten heruntergeladen wurden, um ohne Pufferung abgespielt zu werden.
Von den Opera-Teams ausgezeichnet (obwohl vielleicht sehr leicht datiert) Ressource Alles, was Sie über HTML5-Video und Audio wissen müssen
Wenn das Laden erfolgreich ist, unabhängig davon, ob das src-Attribut verwendet wird oder Quellelemente verwendet werden, werden beim Herunterladen von Daten Fortschrittsereignisse ausgelöst. Wenn genügend Daten geladen wurden, um die Abmessungen und die Dauer des Videos zu bestimmen, wird das Ereignis
loadedmetadata
ausgelöst. Wenn genügend Daten zum Rendern eines Frames geladen wurden, wird dasloadeddata
-Ereignis ausgelöst. Wenn genügend Daten geladen wurden, um ein kleines Stück des Videos wiedergeben zu können, wird eincanplay
-Ereignis ausgelöst. Wenn der Browser feststellt, dass er das gesamte Video abspielen kann, ohne anzuhalten, weitere Daten herunterzuladen, wird eincanplaythrough
-Ereignis ausgelöst; Dies ist auch der Fall, wenn das Video mit einem Auto-Play-Attribut abgespielt wird.
Beachten Sie, dass das Ereignis "canplay through" auf iOS-Geräten nicht unterstützt wird, wie auf areweplayingyet.org angegeben: Ссылка
Sie können die Einschränkungen des Supports umgehen, indem Sie das Element load
an die gleiche Funktion binden, da es auf diese Funktion triggert.
Bisher war die vertrauenswürdigste Lösung, die wir gefunden haben, es zu spielen und darauf zu warten, dass der Puffer vollständig geladen ist.
Wenn das Video lang ist, müssen Sie fast auf die gesamte Videolänge warten.
Das ist nicht cool, ich weiß.
Ich frage mich, ob jemand eine andere magisch zuverlässige Methode gefunden hat (idealerweise mit etwas wie PreloadJS, das automatisch auf Flash zurückfällt, wenn HTML5-Video nicht unterstützt wird).
Sie können dieses nette Plugin verwenden: Ссылка In seiner API gibt es ein onComplete-Ereignis, das ausgelöst wird, wenn das Plugin alle Quellen geladen hat
Tags und Links javascript jquery html5 video html5-video