2015-03-22 5 views
9

Ich möchte alle 30 Sekunden in einem ~ 30 Minuten Video nach verschiedenen Punkten suchen. Die Dateigröße beträgt 100 MB. Wenn ich suche, beginnt der Player von diesem Punkt an zu laden oder muss er die gesamte Datei laden und dann die Zeit darin finden?Muss für die Suche nach einem HTML5-Video die gesamte Datei geladen werden?

+1

basierend auf [dieser] (http://blog.grio.com/2012/08/how-to-seek-an-html5-video-at-a-specific-time-on-load.html) es scheint, als könntest du, ** wenn ** die Video-Metadaten geladen wurden, also kennt der Browser bereits die Videogröße, so dass er den Server bitten kann, von einer anderen Position zu laden, ** und ** der Server weiß, wie er zu honorieren ist Teildatenübertragungsanforderungen. Der schnellste Weg, um herauszufinden, ist natürlich, versuchen Sie es einfach auf einer Test-URL und sehen, was passiert für Ihre Einrichtung. –

Antwort

10

Es hängt vom Browser ab. Wenn wir über einen modernen Browser sprechen, dann werden sie typischerweise eine neue HTTP-Anfrage an den Server senden, die einen Range: Header enthält, der anzeigt, welcher "Chunk" der Datei, die sie laden wollen, angibt. Dies wäre nur für einen Browser, der http 1.1 oder höher verwendet. Ich denke, wenn der Browser HTML5-Video unterstützt, dann können Sie ziemlich sicher sein, dass sie http 1.1 verwenden werden. Beachten Sie jedoch, dass der Client normalerweise immer etwas laden wird. Also, wenn Sie 5 Sekunden in das Vid suchen, wird es im Wesentlichen beginnen, das ganze Ding wieder zu laden, bis eine andere Suche passiert.

+2

HTTP/1.1 ist nicht das Problem ... alles unterstützt HTTP/1.1. Das Problem ist, ob der Client bestimmen kann, welcher Bereich angefordert werden soll (nicht immer möglich, insbesondere für problematische Formate). Es ist nicht ungewöhnlich für einen Kunden, "Nadel fallen". Er weiß die Gesamtgröße der Datei basierend auf den Anfangsantwort-Headern und sollte wissen, wie lange das Video basierend auf einigen Containerformat-Headern zeitlich ist. Es wird oft raten, wo der Benutzer sucht und versuchen, von dort zu dekodieren. Das Problem ist, dass bei verlustreichen Formaten die Bitraten nicht immer konstant sind, so dass das Timing nicht so genau ist. – Brad

+0

Das andere Problem hier ist, ob der Server Bereichsanforderungen unterstützt oder nicht. Sie können HTTP/1.1 problemlos unterstützen und keine Bereichsanforderungen verarbeiten. In der Tat ist dies sehr häufig, insbesondere wenn Menschen ihren eigenen Code schreiben, um Medien zu bedienen, ohne zu wissen, was sie alles zu handhaben haben. – Brad

+0

Ja, das ist ein guter Punkt. Der Server muss Bereichsheader verarbeiten können, damit beide Seiten den gewünschten Effekt erzielen. Ich nahm an, dass der Kontext ein typischer Webserver wie Lighttpd oder Nginx war, aber wenn es sich um einen benutzerdefinierten Servercode handelt, ist dies definitiv ein Faktor, den man berücksichtigen sollte – Harvtronix

1

Nein, es beginnt mit dem Laden des angegebenen Zeitstempels, solange der Browser die Dauer des Videos kennt.

Verwandte Themen