2013-04-04 9 views
5

Ich habe einen HTML5-Videoplayer (Video-Tag). Wenn die Seite geladen wird, wird die Anfrage an die Videodatei gesendet.HTML5-Video: Ändern HTTP-Bereich Anforderung Header

Ist es möglich, die HTTP-Anfrage Header-Feld Bereich zu ändern? (Siehe Screenshot, zwischen zwei roten Linien)

Bereich: Bytes = 0- werden ganzes Video herunter, und ich möchte es begrenzen "Bereich: Bytes = 0-1000000" zum Beispiel

Screenshot

Videodatei ist auf CDN gehostet, so kann ich nichts auf der Serverseite tun.

+0

Ich denke, dass die meisten aktuellen Browser-Implementierungen ziemlich schlau sind. Als das Video-Tag zum ersten Mal herauskam, erinnere ich mich, dass ein Tag versuchen würde, die gesamte Datei so schnell wie möglich herunterzuladen. Neuere Versionen scheinen nur einige Sekunden vorzupuffern. Sehen Sie einen Browser, der beim Laden der Seite versucht, die gesamte Datei herunterzuladen? –

+0

Das Problem ist, wenn Sie das Video anhalten. Dann starten Browser die Datei so schnell wie möglich herunter. – Hese

+0

Der Browser sollte die Verbindung automatisch zurücksetzen (Abbruch der Übertragung), wenn sie weit genug vor dem, was die Wiedergabe erfordert, und dann mehr anzufordern ab dem letzten empfangenen Byte, wenn und wenn es benötigt wird Mehr. – mark4o

Antwort

1

Sie könnten eine Bereichsanforderung mit einem XMLHttpRequest senden! und erhalte eine BLOB-Datei in window.URL.createObjectURL, wenn der Server 'Accept-Range: Bytes' akzeptiert. Das Video-Tag bietet Ihnen viele Ereignisse und Eigenschaften, so dass Sie immer wissen, was gepuffert ist und wo Sie sich befinden. Obwohl der Benutzer auf die Fortschrittsleiste geklickt hat, klicken Sie auf die Schaltfläche "Pause" oder "Stopp". Da die Videoeigenschaften im Vergleich zum Bytebereich zeitbasiert sind, benötigen Sie zusätzliche Informationen aus der Videodatei, die als Video-Metadaten bezeichnet werden. Ich hatte mit Yamdi gespielt, um eine xml-Datei mit abgespieltem Zeit-zu-Datei-Suchpositionsverhältnis zu erhalten und die Metadaten am Anfang für ein .flv festzulegen.

Auf Server-Seite lesen Sie den Bereich Header (Bytes = Nummer1-Nummer2 ...), öffnen Sie die Videodatei, suchen Sie nach Nummer1, drucken (number2-number1 + 1) Bytes und senden einige spezifische Header: Content-Type, Content-Disposition, HTTP/1.1 206 Teilinhalt, Inhaltsbereich.

Sie sollten die Suchposition befolgen. Die Länge liegt bei dir.

+0

Das gesamte Video in einen Blob geladen, video.src auf den Blob setzen. Chrome/Android spielt es immer noch nicht ab. Auch versucht, den Blob ein gzip als Chrome/Android-Anfrage-Header senden eine Anfrage für gzip senden – matthewbaskey

Verwandte Themen