Questa domanda è stata posta diverse volte su StackOverflow e vorrei avere una comprensione dei concetti e dei processi piuttosto che risolvere direttamente un problema. Ho trovato il seguente post in cui la spiegazione era ben dettagliata ma ho alcune domande di follow-up che spero che qualcuno possa approfondire.
Il seguente estratto è ciò a cui sto riferendo le mie domande:
This is however a lot of additional code in your servlet which requires a well understanding of the HTTP Range specification. Usually the servletcontainer's (Tomcat, JBoss AS, Glassfish, etc) own default servlet already supports this out the box. So if there's a way to publish the media folder into the web by standard means, so that you don't need to homegrow a servlet for this, then I'd go on this route.
Qui l'autore spiega che molti servlet container (servlet / server web presumo) gestiscono la specifica della richiesta di intervallo restituendo la richiesta di intervallo specifico di una risposta del flusso video. Il software a cui sto lavorando fornisce un flusso di file video statici a un servlet che riproduce il video in una finestra pop-up di Chrome. Sto leggendo il video in un inputstream e lo porto come risposta alla richiesta e aggiungo le intestazioni rilevanti come ( Content-Range
, Content-Length
, ecc.) Che è tutto fatto sul server web o sul server dei dati. La risposta viene restituita a un servlet.
Ora non sono ancora sicuro di averlo capito correttamente o di aver spiegato la configurazione precedente che ha senso, ma funziona proprio ora che posso vedere il video riprodotto, sono in grado di cercare avanti e indietro e posso vedere il debugger del browser in cui le richieste vengono ripristinate per il successivo intervallo di byte.
Sono corretto allora che il servlet fa funzionare tutto l'intervallo di byte e non devo riscrivere esplicitamente il codice per inviare solo determinati intervalli di byte nella risposta? Lo chiedo nella speranza di una risposta seria, perché il mio supervisore insiste che ho bisogno di inviare gli intervalli di byte specifici. La mia tesi era che se questo funziona bene in Firefox, perché dovrei dover riscrivere completamente il codice per renderlo in Chrome. Fallisce solo in Chrome con grandi dimensioni di video dove, dopo aver riprodotto la maggior parte del video, fornisce un EofException
che la mia comprensione è correlata alle impostazioni del jetty e anche un altro errore relativo a una mancata corrispondenza nella lunghezza prevista dell'audio che invio.
Ma torniamo alla mia domanda sulla mia interpretazione del modo in cui funziona; questa è una persona con più di 20 anni di esperienza quindi non ho idea di cosa sto parlando e ho bisogno di verificare se la mia comprensione è corretta.