È possibile inviare una richiesta di intervallo con una richiesta XMLHttpRequest! e ottieni un file blob su window.URL.createObjectURL, se il server 'Accept-Range: Bytes'. Il tag video ti offre molti eventi e proprietà, quindi sai sempre cosa è il buffer e dove ti trovi. Anche se l'utente ha fatto clic sulla barra di avanzamento, mette in pausa o arresta il pulsante. Poiché le proprietà del video sono basate sul tempo rispetto all'intervallo di byte, sono necessarie alcune informazioni aggiuntive dal file video chiamato metadati video. Avevo giocato con Yamdi per ottenere un file xml di tempo riprodotto per archiviare il rapporto di posizione di ricerca e per impostare i metadati all'inizio per un file .flv.
Sul lato server, leggere l'intestazione intervallo (byte = numero1-numero2 ...), aprire il file video, cercare numeri1, stampare (numero2-numero1 + 1) byte e inviare intestazioni specifiche: Content-Type, Content-Disposition, HTTP/1.1 206 Contenuto parziale, Content-Range.
Si dovrebbe seguire la posizione di ricerca. La lunghezza dipende da te.
fonte
2013-10-31 10:50:14
Penso che la maggior parte delle attuali implementazioni del browser siano abbastanza intelligenti per questo. Quando è uscito il tag video, ricordo che un tag tenterebbe di scaricare l'intero file il più velocemente possibile. Le versioni più recenti sembrano solo pre-buffer di alcuni secondi. Stai vedendo un browser che sta tentando di scaricare l'intero file al caricamento della pagina? –
Il problema è quando si mette in pausa il video. Quindi i browser inizieranno a scaricare il file il più velocemente possibile – Hese
Il browser dovrebbe ripristinare automaticamente la connessione (interruzione del trasferimento) quando è sufficientemente avanti rispetto a ciò che richiede la riproduzione, quindi richiedere più avviamenti all'ultimo byte ricevuto se e quando è necessario Di Più. – mark4o