2013-04-04 16 views
5

Possiedo un lettore video html5 (tag video). Quando la pagina viene caricata, invierà la richiesta al file video.HTML5 video: modifica delle intestazioni delle richieste dell'intervallo http

È possibile modificare il campo Campo di intestazioni delle richieste HTTP? (Vedi lo screenshot, tra 2 linee rosse)

Gamma: byte = 0- scaricherà tutto il video e vorrei limitare a "range: bytes = 0-1.000.000" per esempio

Screenshot

Il file video è ospitato su CDN, quindi non posso fare nulla su serveride.

+0

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? –

+0

Il problema è quando si mette in pausa il video. Quindi i browser inizieranno a scaricare il file il più velocemente possibile – Hese

+0

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

risposta

1

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

+0

Caricato l'intero video in un blob, imposta video.src sul blob. Chrome/Android continua a non riprodurlo. Ho anche provato a inviare il blob a gzip poiché le intestazioni delle richieste di Chrome/Android inviavano una richiesta per gzip – matthewbaskey

Problemi correlati