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.
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? –
Das Problem ist, wenn Sie das Video anhalten. Dann starten Browser die Datei so schnell wie möglich herunter. – Hese
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