HTML5 Video vollständig in JavaScript vorladen

8

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%     
Alex 08.03.2012, 10:34
quelle

6 Antworten

7

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 das loadeddata -Ereignis ausgelöst. Wenn genügend Daten geladen wurden, um ein kleines Stück des Videos wiedergeben zu können, wird ein canplay -Ereignis ausgelöst. Wenn der Browser feststellt, dass er das gesamte Video abspielen kann, ohne anzuhalten, weitere Daten herunterzuladen, wird ein canplaythrough -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.

    
Simon West 08.03.2012, 10:43
quelle
18

Dies lädt das gesamte Video in JavaScript

%Vor%     
jacobsgriffith 25.04.2014 17:51
quelle
1

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

    
kroe 08.01.2014 16:14
quelle
1

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

    
Tomer Almog 11.04.2014 19:30
quelle
0

Funktioniert das?

%Vor%     
Meekohi 18.02.2016 22:09
quelle
0

Hoffe, das könnte dir helfen

%Vor%

und dann, wenn Ihre Videoquelle eine andere Domäne hat, müssen Sie mit CORS umgehen.

    
stackFish 15.07.2017 04:53
quelle