stream http e browser

L'http, il protocollo del web, quest'anno compie un quarto di secolo.
Salvo l'intervento di proxy degni del grande fratello tutte le politiche di sicurezza messe in atto da firewall e router lo fanno passare. Solo effettuando dei filtraggi a livello 3 (vale a dire mettendosi ad aprire i pacchetti http) si riesce a filtrare i contenuti non approvati.
Appunto per questo il tunnelling http (vale a dire mettere in pacchetti http cio' che http non sarebbe) serve per avere ragionevole probabilita' di raggiungere i browser di tutto il mondo con cio' che si vuole.

I browser aprono le pagine html. Quando punti la classica homepage di un sito web (ad esempio http://www.iginomanfre.it) i web server web associano a quella root una pagina html che viene aperta e mostrata dal browser.
L' URL (Uniform Resource Locator, piu' noto come indirizzo web) di uno stream http sembra quella di un sito web (ad esempio http://www.iginomanfre.it/rtp_int oppure http://www.youtube.com/embed/4WNcjkZ6d0w), e tutto dipende da cosa c'e' in quei pacchetti http (ed ovviamente dalle protezioni che il terminale client attua al riguardo).

Il secondo di questi due stream ad esempio e' - in pratica - un file custodito nei server di Youtube e scaricato (tutto insieme - come si faceva una volta - o a piccole porzioni come si fa oggi per evitare copie), e se lo carichi in un browser viene aperto dal suo player di default.
E' un file di dimensione limitata, qualche megabyte. Il player di default, che il browser contiene, in attesa dei primi pacchetti da decodificare mostra una immagine fissa, il poster.

Ne puoi mettere direttamente il link nella pagina http://www.youtube.com/embed/4WNcjkZ6d0w
ed il tuo browser aprira' lo stream dandotene il controllo completo Il primo URL invece e' quello di uno stream dal vivo. E' un flusso di bit che - similmente ad una trasmissione televisiva - non finira' mai... del quale quindi non si puo' aspettare il termine dello scaricamento prima di procedere alla sua visualizzazione.
In genere i browser - in base alla loro configurazione - chiederanno istruzioni accessorie su cosa farci di quanto disponibile a quell'indirizzo: salvarlo o aprirlo con una applicazionee (eventualmente da scegliere).
Dai una occhiata a queste immagini

Se apri uno stream http live con firefox...


Invece di salvarlo, proviamo ad aprirlo scegliendo l'applicazione


Questo e' un transport stream MPEG2 ed e' conveniente aprirlo con VLC


Per abilitare OK La scelta del programma deve essere ripetuta


Non so quanto manca al termine (noi sappiamo che non avra' termine), scaricati finora 7,4 MB


Scaricati finora 8,2 MB, se non lo fermi, da solo non si arrestera'
Se si interrompe il download il file temporaneo viene cancellato...

Se apri uno stream http live con opera...


Cosa ci devo fare ? Scaricalo.


Oppure, aprilo con questa applicazione (ma intanto non finisce mai...)


Coon Opera se ci fai click sopra, lo apri con la applicazione scelta

Se apri uno stream http live con chrome...


Salvalo con il nome di default


Oppure - proviamo - a modificarne il nome dandogli una estensione nota che il pc sa gestire (mediante vlc)


Provo a mettere in pausa il download (che nel frattempo e' arrivato a 2.3 MB) ed a raggiungere la directory di download


Trovo due file uno il nome del file finale (che per ora e' solo un puntatore, se provo ad aprirlo VLC mi da errore) e l'altro il file temporaneo cui pero' devo cambiare estensione.


Estensione che posso cambiare solo se il download e' in pausa...

Aprire uno stream in progressive download dunque...

...non e' niente di complicato. Non e' detto che debba essere uno stream (quindi debba provenire da youtube o vimeo). Potrebbe essere un file, su un web server qualsiasi, da scaricare localmente prima di essere riprodotto proprio come questo.
Il link http://www.iginomanfre.it/media/home 5 min CIF_200.mp4 richiama un filmato di 6,6 MB mediante una a href=".. come se fosse una immagine.
Dopo averne effettuato il caricamento in locale (qualche secondo, dipende dalla velocita' della connessione e dalle capacita' del server), la riproduzione partira'


E' il sistema che veniva usato anche da Youtube fino a qualche anno fa, ora questo sistema e' abbandonato per il dynamic streaming, introdotto da silverlight e poi adottato dagli altri. Il file video viene diviso in piccole porzioni, ed al player e' passato un file xml con dei puntatori.
Questa suddivisione serve a poter adattare la velocita' del flusso alle effettive condizioni della connessione, ma in realta' permette anche la protezione gratuita del contenuto perche' le porzioni appena visionate vengono subito cancellate.
Evitare di salvare in locale il file evita ogni tipo di facili tentazione. In realta' basta realizzare dei semplici programmi che si connettono al server simulando una visualizzazione mentre in realta' salvano il file sull'hard disk (sono i cosiddetti downloader). Per questo, per la protezione del contenuto, ci sono ben altri e piu' efficaci metodi, che permettono di accedere al file temporaneo (o al server) un numero limitato di volte.


Il browser in questa modalita' di funzionamento accede solo apparentemente al sito web, in realta' accede al file temporaneo collocato in una subdirectory ragionevolmente annidata
simile ad esempio a "C:\Users\oem\AppData\Local\Microsoft\Windows\Temporary Internet Files" usata a suo tempo da Internet Explorer7

salvo - molto onestamente - darti la possibilita' di salvare il video dove vuoi come fa firefox (ma solo in questo caso: per i file di youtube il player flash non lo permette).

Diverso e' aprirlo all'interno della pagina...

Volendo cercare di includere in una pagina in html5 un filmato in corso testo, ad oggi (marzo 2014) e' possibile usare solo dei flussi visualizzati in progressive download (ma questo dipende dal browser) oppure quelli erogati da youtube (come ad esempio quello indicato sopra) mediante una istruzione iframe (che serve altrimenti per includere una pagina web all'interno di un'altra)


La bottiglia di Robert Boyle

Dyson Air Multiplier fans and a balloon - Official Dyson video

Moto Perpetuo, Inutilita' Eterna

Macchine dimostranti il moto perpetuo (vedi anche qui o qui)

I quattro filmati richiamati nella tabella qui sopra sono gestiti dal player flash contenuto nel browser invocato con questa chiamata

<iframe width="360" height="208" src="http://www.youtube.com/embed/OS1KXMsE2qk" allowfullscreen></iframe> (per inserire un pezzo di codice, ho circondato la sezione (ripetuta) tra il tag <xmp> e </xmp>)
I filmati richiamati sono gestiti dal player flash contenuto nel browser invocato nella istruzione iframe


La stessa istruzione iframe per aprire una finestra su un altro sito web, che nel caso specifico e'

<iframe width="640" height="480" src="http://www.patriziascola.it"></iframe>

Se si vuole usare la famosa istruzione <video> dell'html5 (che e' comunque in progressive download) a partire dal file collocato su questo server:

Con il seguente codice:

<video width="360" height="200" autoplay controls loop muted> <source src="http://iginomanfre.it/media/home 5 min CIF_200.mp4" type="video/mp4"> Il tuo browser non supporta il tag video. </video>

Il file (in progressive download) e' un mpeg4 ISO che viene autoavviato mostrando i controlli (quando il mouse ci passa sopra) in muto ed in loop

oppure se non si vuole che parta automaticamente al termine del download

con questo codice

<video width="360" height="200" poster="../jpg/home_poster.jpg" controls loop muted> <source src="http://iginomanfre.it/media/home 5 min CIF_200.mp4" type="video/mp4"> Il tuo browser non supporta il tag video. </video> Funziona con tutti i browser, ma non e' detto che tutti i browser interpretino tutti i parametri. Sono importantissimi gli aggiornamenti.
vedi sul sito w3school per informazioni esaurienti al riguardo.
In ogni caso per gli stream video "live" erogati in http da questo server al momento non c'e' modo di inserirli in una pagina html5, salvo richiamare un player esterno con una sintassi html4. Provo a inserirci una porzione html4, e funziona...


Il codice utilizzato e' il seguente <OBJECT classid="clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8" codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab" width="360" height="200" id="home_CIF" events="True"> <param name="Src" value="http://www.iginomanfre.it/CIF_200"> <param name="ShowDisplay" value="True"> <param name="AutoLoop" value="True"> <param name="network-caching" value="300"> <param name="AutoPlay" value="True"> <param name="Volume" value="0"> <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" src="http://www.iginomanfre.it/CIF_200" type="video/mpeg" width="360" height="200" network-caching="300"/> </object> (per inserire un pezzo di codice, ho circondato la sezione (ripetuta) tra il tag <xmp> e </xmp> il cui uso e' deprecato, ma non mi riesce di farlo altrimenti)

E visto che funziona, vuol dire che l'html5 e' una pentola in ebollizione che accetta anche porzioni di html4: siamo fortunati
Al solito la sezione Object accetta il parametro volume che se settato a 0 viene interpretato solo da i browser derivati da netscape mentre non sembra possibile azzerare il volume in Internet Explorer

In ogni caso, prova ad usare questo simulatore del W3C copiandoci dentro una porzione di codice
Puo' essere anche interessante dare una occhiata a questa pagina su questo sito.

indietro alla homepage