Progetto e realizzazione di una piattaforma per lo streaming video in diretta e in dierita sul web
Studente:
Alessio Degani
Ente ospitante: Relatore:
Matricola: 49007
Ringraziamenti Ringrazio i miei genitori che mi hanno dato la possibilit di frequentare questa universit e che mi hanno sostenuto in questa avventura Ringrazio lo sta della Wavetech e del Rumore Bianco, in particolare L'Ing Pianta e l'onnipresente e instancabile Piero Ringrazio la mia band: The Haunted Museum valvola di sfogo, in particolare il Piccy e il Verni che mi sono stati inconsapevolmente d'aiuto nei momenti in cui le certezze hanno cominciato a vacillare Ringrazio la BrainLD e tutto quello che ruota attorno a questo micromondo di smanettoni, hackers, ai quali devo molto del mio sapere in campo IT. La maggior parte degli stimoli a oltrepassare il limite di ci che lo scibile in campo informatico ed elettronico, la voglia di sperimentare, provare, fallire e riprovare nch una cosa non funziona come voglio io, vengono da qui. Particolarmente Pedro, Mario, Dany, Marco anche miei compagni di alloggio.
A Questa tesi stata redatta in L TEX'
Indice
1 Introduzione
1.1 1.2 WAVETECH S.r.l. . . . . . . . . . . . . . . Attivit dell'azienda . . . . . . . . . . . . . 1.2.1 ADSL senza li . . . . . . . . . . . . 1.2.2 VoIP . . . . . . . . . . . . . . . . . . 1.2.3 Networking . . . . . . . . . . . . . . 1.2.4 Progettazione infrastrutture radio . . 1.2.5 Progettazione sistemi embedded . . 1.2.6 Videosorveglianza pubblica e privata Obiettivi del lavoro di stage . . . . . . . . . 1.3.1 Descrizione del documento . . . . . . Alcuni termini . . . . . . . . . . . . . . . . Cos' lo streaming di contenuti multimediali 2.2.1 Fasi per ottenere uno stream . . . . 2.2.2 Sistemi di trasmissione via web . . . 2.2.3 Storia . . . . . . . . . . . . . . . . . 2.2.4 Larghezza di banda e storage . . . . 2.2.5 Protocolli per lo streaming . . . . . Windows Media . . . . . . . . . . . . . . . . Flash . . . . . . . . . . . . . . . . . . . . . . VLC . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Storia . . . . . . . . . . . . . . . . . 2.5.2 Principali caratteristiche . . . . . . . Fumotion/Fluendo . . . . . . . . . . . . . . 2.6.1 Fluendo . . . . . . . . . . . . . . . . 2.6.2 GStreamer . . . . . . . . . . . . . . 2.6.3 Flumotion Streaming Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 6 7 7 9 10 11 12 13 15 15 16 20 22 22 24 25 25 26 27 28 28 29 31 32 32
1.3
13
32
3.3
Soluzione proposta sulla base dei requisiti . . . . . . . . . . . 3.3.1 Materiale hardware e software . . . . . . . . . . . . . . Risorse hardware . . . . . . . . . . . . . . Installazione e congurazione del software 4.2.1 La struttura del server Flumotion . 4.2.2 Il motore di Flumotion . . . . . . . 4.2.3 I le di congurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33 33
4 Realizzazione e implementazione
4.1 4.2
36
37 39 40 41 42
50 51
51 51 54 55 55
B Il formato OGG/THEORA
54
Bibliograa
57
Capitolo 1
Introduzione
Fonte: http://www.wave-tech.it/
Attraverso sinergie con partner europei Wavetech s.r.l. ha sviluppato soluzioni di provata ecacia che consentono di ottenere ottimi risultati e massimi livelli di sicurezza.
mente sui tralicci collinari utilizzati anche da radio e tv). Da qui viene irradiato un segnale che viene captato dall'antenna installata presso il cliente. E' fondamentale che tra le due antenne vi sia visibilit diretta e non ci siano ostacoli di alcun tipo (alberi, palazzi etc ). Tutte le antenne usate sono di marca Motorola, modello Canopy.
Figura 1.1: Modello di distribuzione del segnale con dispositivi Canopy L'antenna installata presso il cliente a tutti gli eetti un ruoter e viene chiamata SM (Subscriber Module). progettata per l'esterno dunque resistente all'acqua, quasi completamente di plastica, piccola ( 29,9 cm x 8,6 x 8.6 ), leggera ( meno di mezzo Kg), resistente alle temperature ( da - 40C +55C), facilmente ssabile (normalmente con delle semplice fascette da elettricista anche sul palo dell'antenna tv gi esistente). Essa collegata con un solo cavo (rj45 utp: classico cavo di rete) che porta sia il segnale INTERNET che l'alimentazione all'interno dell' edicio/casa/azienda. La SM emette un cono d'onda di 60 ed quindi semplice allinearla con l'Hot Spot (punto di emissione del segnale). La distanza operativa massima di circa 4,5 - 5 Km di distanza in linea retta tra la SM e l'Hot Spot. Distanze superiori (no a 8-9 Km max ) sono raggiungibili installando una antenna parabolica insieme all' SM, che verr in questo caso usato come illuminatore della stessa.
1.2.2 VoIP
I beneci dell'utilizzo di una tecnologia innovativa quale il VoIP sono molteplici. Innanzitutto una delle cosiddette tecnologie del futuro, che sostituir in tempi brevi la normale telefonia per taluni ormai obsoleta. Consente un abbattimento dei costi notevole, sia per chiamate nazionali che internazionali o intercontinentali. Il VoIP pu essere utilizzato sia all'interno di una stessa azienda, sia per telefonate pi complesse, come teleconferenze in multi-point. Inoltre si pu utilizzare una sola rete integrata per voce e dati, che garantisce una riduzione dei bisogni totali di infrastruttura e, in ambito aziendale, uno scambio agevolato delle informazioni. Se si decide di utilizzare l' apparecchio telefonico apposito, questi a dierenza dei normali apparecchi potr essere sfruttato sia per normali conversazioni, che per avere accesso ad alcuni servizi internet, quali l' elenco telefonico ottenendo una risposta in forma vocale o testuale. La versatilit di questa tecnologia notevole, in quanto un impiegato, ad esempio di un call center, potr lavorare sia in sede che direttamente da casa, consentendo cos vantaggi sia per il datore di lavoro (risparmiando) e sia per il lavoratore (maggiore libert). Anche la trasmissione di dati via fax sar facilitata dal segnale digitale a pacchetti essendo pi funzionale rispetto alla normale connessione dial-up PSTN che viene utilizzata dai normali fax (trasmissione pi lenta). Passando alla tecnologia VoIP non detto che si debba perdere il proprio numero telefonico, perch, grazie alla Number Portability il numero resta tale e quale! La N.P. , infatti, una procedura che permette di trasferire numeri telefonici da un operatore all'altro, si potranno quindi trasferire i numeri esistenti sulle nuove linee VoIP (cos come possibile fare gi da un po' di tempo con i vari gestori di telefonia mobile), risparmiando, ovviamente, sui canoni ssi delle linee esistenti. E' possibile, inoltre, telefonare da un pc portatile via internet da qualsiasi luogo dotato di collegamento ADSL (Alberghi, uci, case, strade, ville, etc., tramite collegamenti wireless). La qualit della riproduzione vocale pu essere modicata a seconda delle esigenze. Le chiamate tramite VoIP sono pi sicure delle normali chiamate, anche se non vengono criptate o cifrate. Per riuscire ad intercettare una comunicazione VoIP si deve aver accesso agli apparati che costituiscono la rete VoIP 6
e/o la Rete Internet. L'autenticazione che invece permette di identicare chi eettua le chiamate protetta tramite un protocollo di hashing, molto dicile da ingannare.
1.2.3 Networking
Wavetech s.r.l. in grado di progettare e realizzare reti di qualsiasi dimensione proponendo le soluzioni piu' adatte per le piu' diverse esigenze, le reti locali per Home Oce o Small Oce sino alle soluzioni piu' complesse per la media o la grande impresa. La progettazione del sistema informativo ha come obiettivo la convergenza di tutte le tipologie di dati su un unico protocollo IP. La gestione centralizzata del usso di dati consente un controllo completo e puntuale di ogni risorsa di rete come terminali, stampanti, videocamere, dsp, acquisizione dati da sensori da un unica postazione. Controllare, monitorare e amministrare gli accessi ad internet del proprio sta una esigenza sempre pi sentita. La possibilit di far rispettare le proprie politiche di accesso ad internet (bloccando per esempio streaming media, audio e video, download le) consente di ridurre i costi di accesso, migliorare la risposta della rete e migliorare il rendimento della postazione di lavoro, oltre che proteggere l'immagine aziendale. Particolare attenzione posta alla navigazione sicura dei minori implementando sistemi di sicurezza capaci di aggiornare in tempo reale (ogni ora) la lista dei siti ritenuti a rischio impedendo l'accesso a siti pornograci, pedoli o simili.
Non essendo pi necessario ricorrere alla posa di cavi in bra ottica sia i costi che i tempi sono notevolmente ridotti. Tipicamente la connessione puntopunto si rende necessaria per realizzare dorsali in grado di trasportare connetivit da una area geograca all'altra oppure quando due sedi distaccate di una stessa azienda necessitano di comunicare direttamente o condividere la connessione Internet installata presso una di esse. Altre applicazioni possono essere il collegamento delle varie sedi comunali,scuole, biblioteche sparse sul territorio; connessione tra rifugi alpini, impianti sciistici, centri e mezzi di soccorso. Tali connessioni possono essere realizzati attraverso moduli radio bridge operanti con il protocollo proprietario o standard (IEEE 802.11.b o 802.11.a-Hiperlan) . Wavetech fonda la propria esperienza nel progetto, installazione e gestione di infrastrutture wireless, proponendo in conformit alle leggi vigenti soluzioni in grado di connettere due punti distanti no a 5-6 km.
Link punto-multipunto
Promuovere lo sviluppo di infrastrutture sul territorio ed abbattere il Digital Divide il passo che promuoviamo per aiutare il progresso, cercando di eliminare le barriere della comunicazione. L'accesso alle informazioni diventa una soglia per la crescita e lo sviluppo del territorio. Dopo l'avvento di Internet e grazie al progresso delle tecnologie di comunicazione, nasce il concetto di banda larga come mezzo di trasporto di quantit di dati e informazioni a velocit impensabili solo pochi anni prima. Negli ultimi due anni la domanda di connessioni a banda larga da parte di aziende e privati cittadini aumentata vistosamente. Le linee telefoniche rappresentano la prima infrastruttura gi disponibile su cui far viaggiare la banda larga. Con il forte sviluppo delle tecnologie per la trasmissione radio dei dati digitali, diventa possibile servire anche quelle zone non coperte dai servizi di telefonia sucienti per fare fronte alle crescenti richieste di banda. Successivamente con la riduzione dei prezzi degli apparati radio oggi possibile fornire connettivit wireless in concorrenza con le tradizionali connessioni ADSL via cavo. Wavetech fonda la propria esperienza nel progetto, installazione e gestione di infrastrutture wireless, proponendo in conformit alle leggi vigenti soluzioni in grado di diondere in un raggio di circa 5km la banda Internet a pi utenti.
Hot-Spot WiFi
Grazie agli anni di esperienza maturati a contatto con i clienti e grazie al modello di business scelto, Wavetech si ritagliata un ruolo da leader nel mercato delle soluzioni di accesso a Internet in ambito pubblico. Wavetech provider internet autorizzato segue il proprio cliente dalla progettazione alla realizzazione pratica del sistema, facendo dell'autonomia dei clienti nella gestione del servizio, l'obiettivo primario.
software, sulla base dell'architettura dell'algoritmo di calcolo. Per esempio, l'implementazione di una Fast Fourier Transform su un Rcf consiste prevalentemente nel mappare l'architettura computazionale dell'algoritmo sull'array di celle che rende disponibile l'Rcf. In tal modo il parallelismo esecutivo dell'Rcf coincide con il parallelismo computazionale della Fft, mentre, come noto, il parallelismo esecutivo di un Dsp non coincide con il parallelismo computazionale della Fft, con un ovvio calo di ecienza esecutiva a parit di parametri computazionali (velocit di clock, formato dell'aritmetica, risorse di memoria, ecc.).
Videosorveglianza su IP
I sistemi tradizionali di sorveglianza TVCC basati su tecnologia analogica, sono generalmente composti da costosi apparati come telecamere, monitor, videoregistratori collegati tra loro da cablaggi coassiali, la tecnologia oggi a disposizione permette di ottenere gli stessi risultati adottando soluzioni basate su IP (Internet Protocol). Sfruttare IP signica far convergere tutte le informazioni su un unico standard che la trasmissione su protocollo TCP/IP. Il termine convergenza, anche conosciuto come multi-service networking, fa riferimento all'integrazione di soluzioni dati, voce e video in una singola rete basata su IP. La scelta di Wavetech di orire sistemi di sorveglianza basati su rete IP deriva dalla consapevolezza che il futuro del business dipende dalle reti stesse. 10
Wavetech si avvale di una linea di videocamere digitali che ci connettono direttamente alla rete e quindi a Internet, senza necessit di un PC d'appoggio, permettendo di realizzare sistemi di controllo ecaci e intelligenti.
12
Capitolo 2
API
Application programming interface. un set di funzioni, procedure o classi che un sistema operativo, una libreria o un servizio, orono in supporto alle richieste fatte da un programma. un metodo per ottenere un'astrazione, di solito tra l'hardware e il programmatore, o tra software a basso ed alto livello. Le API permettono ai programmatori di sfruttare certe funzioni, che sono gi state implementate in altri programmi.
Codec
La mole di dati che una sequenza video comporta molto elevata. Per esempio, un secondo di una trasmissione televisiva non compresso richiede 600-800 KB di spazio, sarebbe quindi improponibile trasmettere un lmato 13
senza averlo prima compresso (e quindi codicato) con un algoritmo di compressione (codec). Il compito del codec consiste nel trasformare, in fase di acquisizione, le informazioni ricevute, in un le pi piccolo e compatto, mentre in fase di riproduzione, nell'interpretare il codice del le per poterlo visualizzare nella sua integrit. La scelta del corretto formato video, e del corrispondente codec, di vitale importanza per la buona riuscita di uno streaming. Tra i formati video utilizzati troviamo: Microsoft Video for Windows (AVI) Apple Quick Time (MOV) MPEG, MPEG2, MPEG4 Real Media (RM, RA, RAM) Microsoft Windows Media (ASF, WMA) Ognuno di questi supporta vari tipi di codec, con requisiti di banda e caratteristiche dierenti. I codec si dividono in base alla modalit in cui eettuano la compressione: con perdita di informazione (lossy) senza perdita di informazione (lossless) Per realizzare tale compressione si fa ricorso alla riduzione della precisione dei colori dei singoli pixel (codec video) o delle frequenze da riprodurre (in alcuni codec audio vengono soppresse le frequenze non udibili dall'orecchio umano), alla eliminazione delle ridondanze o alla scrittura delle sole dierenze (codec video) rispetto ad una immagine di riferimento (keyframe).
14
Postproduzione: un'ulteriore fase di lavoro, che pu essere eettuata a vari livelli in fase di acquisizione, oppure in fase di codica. Si tratta di un'attivit che viene eseguita tipicamente su materiale che deve essere erogato in modalit on-demand. Per postproduzione si intende la manipolazione del contenuto audio/video in modo tale da migliorarne la qualit, aggiungere titoli, eetti.
16
1 a 1 come contenuto: 1 server invia una specica trasmissione video all'utente che l'ha richiesta; un eventuale secondo utente che voglia vedere lo stesso video avr una trasmissione a lui dedicata, con lo stesso contenuto ma con un diverso inizio, quindi sfasata nel tempo e del tutto indipendente dalla prima 1 a molti come struttura di rete: 1 stesso server deve servire molti utenti allo stesso tempo Questo implica che per ogni utente che si collega si deve creare un canale virtuale server-utente per la specica trasmissione e quindi la banda richiesta in uscita dal server pari alla somma di tutte le bande dei clienti attivi. Es. se al server sono collegati 100 utenti che vedono vari video a 150 kbit per secondo (150 kbps), il server dovr avere una connessione a Internet superiore a 100x150 = 15.000 kbps ( = 15 Mega) per poter gestire in parallelo tutto questo traco senza interruzioni per mancanza di banda. Da qui il problema di costi molto elevati per la necessit di molta banda e molta potenza del server (il problema ancora pi critico nel live, dove chi non riesce a collegarsi ha perso lo spettacolo, mentre nell'on-demand se un utente trova la banda sovraccarica pu riprovare pi tardi). Quindi nei contratti relativi a questo servizio il numero massimo di utenti contemporanei gestiti un elemento importante per denire le tarie. Il video-on-demand ha una gamma molto ampia di applicazioni, che vanno dalla pubblicit in Rete, all'e-Learning, ai videocataloghi. La trasmissione di contenuti registrati in precedenza d luogo a un certo numero di soluzioni particolari per ridurre i costi di cui le pi importanti sono: Streaming server - la soluzione professionale per un vasto pubblico, basata su un server molto potente con software specializzato per inviare i video a richiesta. I pi sosticati gestiscono canali adattivi a banda variabile: inviano immagini pi piccole quanto pi il collegamento Internet lento Download progressivo - il le inserito in un server web e viene scaricato sul PC: per la visualizzazione non necessario averlo gi scaricato tutto: il video visualizzato praticamente mentre arriva Caching su server locali - in molti casi il server centrale e la rete non sarebbero in grado di gestire la banda necessaria per trasmettere il video in diretta. Quindi si installano dei piccoli server in ogni luogo periferico in cui trasferire poco a poco copia dei contenuti centrali: ad es. il sistema centrale scarica di notte gli aggiornamenti sul PC di 17
caching, che quindi possono trasmettere senza problemi ai PC locali mediante LAN.
Web-TV
una trasmissione 1 a molti (come la televisione) e questo pu introdurre una semplicazione nella rete: il server che trasmette potrebbe inviare 1 solo canale video, basta che questo venga duplicato nei nodi intermedi di rete (multicast). La funzione di duplicazione gi prevista nei router. Nel Video-On-Demand non live e nella Web-TV la compressione viene fatta negli studi dopo il montaggio dei lm, mentre nel caso live deve essere fatta in diretta. Nel primo caso non ci sono problemi di tempo, quindi si possono usare algoritmi di compressione molto potenti, che a parit di banda danno immagini migliori; di solito il video viene compresso in pi passate per ottimizzare la compressione tenendo conto delle caratteristiche di tutto il lm. Questo pu richiedere per 1 minuto di video alcuni minuti o decine di minuti di elaborazione. Nel secondo la compressione non pu essere fatta pi lentamente del lm e deve essere obbligatoriamente a 1 passata. A dierenza della videoconferenza o della videosorveglianza importa poco se la trasmissione ritardata di qualche secondo, perch non ci sono problemi critici di interazione: questo consente di usare algoritmi pi sosticati che introducono sfasamenti temporali di 5-10 secondi o pi. In conclusione non-live, live e videosorveglianza/conferenza hanno problemi diversi di fruibilit temporale, che implicano complessit di elaborazione e qualit progressivamente decrescenti, pur basandosi sullo stesso tipo di algoritmo, di solito derivato dallo standard MPEG4. In generale tutte le trasmissioni di tipo televisivo su Rete (live o on-demand), che possiamo chiamare Web-TV, richiedono elevata qualit e sistemi in grado di gestire eventuali problemi di banda per evitare interruzioni.
IPTV
un servizio per trasmissione video codicato in modo particolare, ricevibile mediante set-top-box collegato al televisore. A parte la codica proprietaria, caratteristiche e vincoli trasmissivi sono gli stessi della Web-TV. Un set-tp-box un sistema hardware, che contiene le funzioni principali di accesso ai servizi internet. Di fatto una specie di PC specializzato e semplicato al massimo per ridurne i costi. Spesso l'IPTV pensata come futuro 18
Digital Signage
Il Digital Signage un particolare tipo di sistema, che consente di trasmettere contenuti multimediali pubblicitari su una rete di schermi pubblicitari remoti installati in ambienti aperti al pubblico (hall, supermercati, strade, ...). Questa applicazione caratterizzata da contenuti molto ripetitivi, il che consente di usare un approccio trasmissivo del tutto particolare. I contenuti video sono di alta qualit, il che implica le molto voluminosi, non trasmissibili direttamente ai video per problemi di banda: quindi sono scaricati lentamente sui PC remoti che gestiscono gli schermi e il sistema centrale controlla in questi PC la proiezione in locale di questi le. Questa soluzione quindi molto economica: con una ADSL di scarsa qualit si possono scaricare molte decine di video ad alta risoluzione, che sono registrati nel disco dei PC e visualizzati secondo il programma del sistema centrale. Sistemi che utilizzano tecniche analoghe sono utilizzati per la proiezione di video a pagamento negli hotel: in questo caso nel server dell'hotel vengono scaricati tutti i lm e un sistema locale collegato a quello centrale gestisce i pagamenti elettronici.
Videosorveglianza
La videosorveglianza richiede immagini di risoluzione e dimensioni non elevate. Il Centro di controllo il punto critico perch vi si possono concentrare decine o centinaia di canali. Tuttavia non pensabile di avere molti video sempre controllati a vista: in molte applicazioni preferibile registrare tutto e poi eventualmente rivedere cosa successo. Per la videosorveglianza dove non vi nessuno che si muova (es. uci di notte, case disabitate, ..) utile la funzione di Motion Detection, tipica di questa applicazione: solo quando la telecamera registra un movimento (come dierenza fra 2 immagini successive) invia il segnale al Centro. Per eettuare la compressione del usso video necessaria una forte velocit e potenza di calcolo, quindi si richiede l'uso di un PC a cui si collega un apparato tipo webcam (nel caso della videoconferenza di qualit il PC appare come un'unit hardware dedicata per semplicare i comandi). Nella telesorveglianza non pensabile installare dei PC nei sotti o su pali nelle strade, quindi alla webcam si integra un'unit hardware di compres19
sione. Solitamente queste hanno poca potenza e quindi la compressione fatta con uno standard meno sosticato. Se le telecamere e il Centro Controllo sono nello stesso edicio non vi una sensibile dierenza nel tipo di compressione a meno che non ci siano molte decine di telecamere, la LAN pu accettare anche una banda molto ampia per ciascuna telecamera. Se si deve mettere una telecamera per riprendere un campo da sci va benissimo il Motion-JPEG, che pu anche mandare immagini grandi a intervalli di decine di secondi: non si vedranno gli sciatori muoversi, ma si vedr benissimo com' la neve. Invece se si deve eettuare un monitoraggio continuo su punti remoti la compressione MPEG4 d'obbligo: si pu avere un canale di uscita di 64-128 kbps e ricevere almeno 5-10 immagini al secondo.
Videoconferenza
La videoconferenza pu essere realizzata eettuando tanti collegamenti bilaterali, ma di solito, per esigenze di pianicazione e gestione, si usa un server centrale che raccoglie ciascuna trasmissione e rimanda a ciascuno le immagini degli altri. Questo implica una banda asimmetrica, ogni punto trasmette 1 canale e ne riceve N: questo ben compatibile con l'ADSL che ha proprio la banda asimmetrica con banda in ingresso molto superiore a quella in uscita. Il server invece deve avere una banda elevata in entrambi i sensi, e quindi deve essere installato in un punto servito con connettivit Internet professionale. Il caso di videoconferenza a 2 diventa invece molto pi semplice perch non richiede il server, quindi si possono anche usare soluzioni free reperibili in Internet (es. Messenger). E' importante ricordare che nella videoconferenza si devono usare programmi o apparati specici, perch l'unico caso di trasmissione bidirezionale. Non sono quindi utilizzabili apparati per videosorveglianza o per web-TV, ma si deve avere una integrazione di queste due funzioni.
2.2.3 Storia
I primi tentativi di mostrare dei contenuti multimediali su un computer risalgono agli albori dell'informatica, negli anni '20. Per alcuni decenni per, non sono stati ottenuti risultati soddisfacenti a causa delle ridotte capacit dei calcolatori e ai costi elevati. Dall'inizio degli anni '90, i personal computer sono diventati abbastanza
20
prestanti per mostrare divesi tipi di media. I principali problemi tecnici che fermavano lo streaming erano: avere abbastanza potenza nella CPU e bandwith nei bus per supportare il massiccio trasferimento di dati creare dei percorsi a bassa latenza nel sistema operativo per gli interrupt in modo da prevenire i cosidetti buer underrun In ogni caso, le reti di computer erano ancora molto limitate, cos i contenuti multimediali erano costretti a viaggiare su altri tipi di canali non-streaming, come ad esempio i CD-ROM. Dalla ne degli anni '90, entrando nel 2000, gli utenti di internet hanno visto una grossa evoluzione: grande aumento della bandwith delle reti, specialmente nel cosidetto ultimo miglio aumento esponenziale degli accessi alla rete Internet standardizzazione dei protocolli e dei formati, come ad esempio il TCP/IP, HTTP e HTML commercializzazione di internet Questi aspetti del networking combinati con i nuovi home computer sempre pi potenti e i sistemi operativi moderni, hanno reso praticamente possibile lo streaming di contenuti multimediali anche per i consumatori ordinari. In generale, il contenuto multimediale rimane pesante in termini di storage e di trasmissione, cos sono stati introdotti dei sistemi di compressione che agiscono alleggerendo i contenuti pur mantenendo lo stesso contenuto informativo. Possiamo distinguere 2 tipi principali di stream: On demand streams. Quando il contenuto memorizzato in un server per un lungo periodo e viene trasmesso all'utente al momento della sua richiesta. Live streams. Quando il contenuto disponibile solo in un determinato momento, come ad esempio in uno stream video di un evento sportivo in diretta. Tuttora si stanno eettuando ricerche nel campo dello streaming media, infatti i metodi e i protocolli per lo streaming sono in continua evoluzione.
21
Facciamo un esempio: Un ora di video codicato a 300 Kbit/s (caso tipico per un video per lo streaming ad una risoluzione 320x240) occuper approssimativamente 3600 s 300 Kbit/s = 130 MB 8 1024 Se questo le memorizzato su un server che fornisce stream on-demand e questo stream usato da 1000 utenti in contemporanea, usando un protocollo unicast, ho bisogno di una larcghezza di banda pari a 300 kbit/s 1000 = 300000 Kbit/s = 300 Mbit/s Che equivale a circa 125 GiB ogni ora. Usando invece un protocollo multicast, il server manda un solo stream che comune per tutti gli utenti. In questo modo la larghezza di banda richiesta di soli 300 Kbit/s. Di seguito vediamo le dierenze principali tra unicast e multicast.
Il livello di trasporto
I due principali protocolli a livello di trasporto sono User Datagram Protocol (UDP) e Transmission Control Protocol (TCP). Il TCP un protocollo adabile. Garantisce la corretta ricezione di ogni singolo bit dell ostream. Tuttavia un protocollo complesso che prevede un sistema di timeouts e ritrasmissione. Questo signica che quando avviene una perdita di dati o un errore di trasmissione, si ha uno stallo nello stream. Il problema pu essere minimizzato usando un sistema di buering dei dati. Le caratteristiche di questo protocollo per, lo rendono poco adatto al trattamento di stream. Per questo motivo si preferisce il protocollo UDP. Questo notevolmente semplicato rispetto al TCP, ed pi eciente. Il server invia lo stream sottoforma di piccoli pacchetti. Tuttavia non vi un
22
meccanismo che garantisca la corretta ricezione di questi pacchetti e il compito di rilevare eventuali errori, lasciato al livello applicazione. Quando avviene una perdita di dati, lo stream non si interrompe, ma pu vericarsi un dropout, ovvero una perdita di uno o pi fotogrammi. Esistono inoltre dei protocolli specici per lo streaming, come il Real-time Streaming Protocol (RTSP), Real-time Transport Protocol (RTP) e il Real-time Transport Control Protocol (RTCP). Questi per si appoggiano sempre su UDP.
Il livello data-link
Anche qui abbiamo due distinzioni principali tra protocolli Unicast e Multicast.
Figura 2.1: Flussi dei dati nel protocollo unicast Nei protocolli di tipo unicast, il server manda copie separate dello stream ai vari destinatari. L'unicast la norma per la maggior parte delle connessioni in internet, ma per lo streaming in cui abbiamo molti utenti che usufruiscono dello stesso stream contemporaneamente, si ha un notevole spreco di banda. Per questo ci vengono in aiuto i protocolli multicast. I protocolli multicast sono stati sviluppati per ridurre l'inutile replicazione di dati (e di conseguenza anche il carico della rete e dei server) che si ha quando molti utenti ricevono lo stesso identico stream in modo indipendente. Questi protocolli mandano un solo singolo stream da una sorgente ad un gruppo di destinatari. Ovviamente, la vera utilit del multicast si ha su stream di tipo live, mentre con stream on demand, si perdono completamente i vantaggi appena citati.
23
L'IP Multicast ore un mezzo per inviare un singolo stream a pi utenti contemporaneamente. Un problema per pu essere causato dall'infrastruttura della rete. L'IP Multicast dev'essere abilitato sui vari router e rewall che dividono le varie LAN dalla rete internet, i quali devono permettere l'instradamento di pacchetti destinati ad un gruppo multicast.
usato Windows Media Player per visualizzare questi stream, ma anche altri player sono in grado di riprodurli (VLC, Mplayer, ...). In genere questi stream viaggiano su un'infrastruttura di protocolli proprietaria di Microsoft chiamata Microsoft Media Server (MMS).
2.4 Flash
Questa la piattaforma proprietaria di Adobe. Si basa sulla tecnologia Flash, e in particolare (dalla versione 6) il ash player permette di usufruire di media stream in formato Flash Video (FLV). Questo formato si basa sulla codica MPEG4. Diversi video provider offrono il loro materiale in formato Flash Video, per citarne alcuni: YouTube, Google Video, Yahoo! Video, Reuters.com, ... I ash video sono fruibili dalla maggior parte dei sistemi operativi, grazie all'Adobe Flash Player sottoforma di plugin per i vari browser, e anche al supporto di applicazioni di terze parti come ad esempio i gi citati VLC, Mplayer, ... Adobe Flash Player, supporta la riproduzione di video FLV incapsulati in le SWF, ma altre applicazioni possono essere usate per la riproduzione diretta dei FLV.
2.5 VLC
VLC media player (originariamente chiamato VideoLAN Client) un media player del progetto VideoLAN. VLC supporta molti codec audio e video, formati le come DVD, VCD e vari protocolli per lo streaming. Pu essere utilizzato anche come server per trasmettere in stream, in unicast o in multicast su IPv4 o su IPv6 su un network a larga banda. Il media player impiega la libreria codec libavcodec del progetto FFmpeg per maneggiare molti dei formati supportati, ed utilizza la libreria di decriptazione DVD libdvdcss per gestire i playback dei DVD cifrati. VLC uno dei media player pi disponibili su varie piattaforme, infatti ci sono versioni per GNU/Linux, Microsoft Windows, Mac OS X, BeOS, BSD, Pocket PC e Solaris. Su Windows, Linux, e altre piattaforme, VLC fornisce un plugin per Mozilla/Firefox, il quale permette agli utenti di visualizzare alcuni le di Quicktime e Windows Media direttamente nella pagina web senza utilizare i prodotti specici, rispettivamente di Apple e di Microsoft. Dalla versione 0.8.2, VLC fornisce anche un plugin ActiveX, che permette la visualizzazione di 25
3GP, ASF, AVI, FLV, MKV, QuickTime, MP4, Ogg, OGM, WAV, MPEG-2 (ES, PS, TS, PVA, MP3), AIFF, Raw audio, Raw DV, MXF, VOB. Cinepak, DV, H.263, H.264/MPEG-4 AVC, HuYUV, Indeo 3 MJPEG, MPEG-1, MPEG-2, MPEG-4 Part 2, Sorenson, Theora, VC-1, VP5, VP6, WMV.
Sottotitoli
DVD, SVCD, DVB, OGM, SubStation Alpha, SubRip, Advanced SubStation Alpha, MPEG-4 Timed Text, Text le, Vobsub, MPL2, Teletext.
Audio formats
AAC, AC3, ALAC, AMR, DTS, DV Audio, XM, FLAC, MACE, MP3, PLS, QDM2/QDMC, RealAudio, Speex, Screamtracker 3/S3M, TTA, Vorbis, WavPack, WMA.
Formati di Output per streaming/encoding Container formats ASF, AVI, FLV, MP4, Ogg, Wav, MPEG-2 (ES, PS,
TS, PVA, MP3), MPJPEG, FLAC, MOV
Video formats
H.263, H.264/MPEG-4 AVC, MJPEG, MPEG-1, MPEG-2, MPEG-4 Part 2, VP5, VP6, Theora, DV
Audio formats
Protocolli di streaming
2.5.1 Storia
Originariamente il progetto VideoLAN aveva l'intento di creare un server e un client per gli stream video attraverso la rete. Inizialmente sviluppato da alcuni studenti dell'cole Centrale Paris, ora mantenuto da diversi con-
26
tribuenti provenienti da tutto il mondo. VLC era il client per il progetto VideoLAN, infatti VLC signica appunto VideoLAN Client. stato rilasciato sotto la ligenza GPL1 il 1 febbraio 2001. La parte server invece (VLS), ora stata interamente incorporata in VLC, il quale ora pu fungere sia da client che da server. Il progetto ha cos assunto il nome di VLC Media Player. VLS esiste ancora come server stand alone, ma ha funzionalit limitate e il suo supporto ormai cessato.
Figura 2.3: schema a blocchi di tipiche cogurazioni per lo streaming con VLC VLC ha un design altamente modulare, il quale rende molto facile e veloce, l'inclusione di nuovi moduli ad esempio per supportare nuovi formati, codecs o metodi di streaming. Questo principio permette anche a VLC di avere una vasta scelta di interfacce,tipologie di uscite audio e video, controlli, ltri audio e video. Inoltre la sua modularit facilita il porting sui diversi principali sistemi operativi. Inoltre VLC famoso per la sua particolare abilit di riprodurre ussi video da le incompleti o parzialmente danneggiati. Questo utile in caso vogliamo
1
27
vedere un video che non ha ancora completato il download. VLC pu leggere le video contenuti in una immagine di un disco (i le .iso) anche se il sistema operativo dell'utente non sa come trattare questo formato. VLC supporta tutti i codec e tutti i formati di le supportati da FFmpeg2 e anche altri formati non inclusi in FFmpeg. Il player possiede inoltre una vasta scelta di ltri per distorcere, ruotare, tagliare, deinterlacciare, aggiungere loghi in sovraimpressione, correggere i colori, e molti altri. Usando la porta Firewire, VLC pu trasmette stream audio/video verso un monitor o una HDTV3 .
2.6 Fumotion/Fluendo
2.6.1 Fluendo
Fluendo S.A. una compagnia privata situata a Barcellona, Spagna. Lo scopo di Fluendo quello di migliorare l'esperienza multimediale nel mondo del software libero. Lo sviluppo e il mantenimento del framework multimediale GStreamer e l'oerta di una vasta gamma di soluzioni, sia free sia commerciali, al top della gamma, fanno di Fluendo una compagnia di spicco in questo ambiente. Dal progetto Fluendo sono nate due compagnie con compiti ben distinti: Flumotion Services S.A. ha il compito di sviluppare il cosidetto Flumotion Streaming Server sia dal punto di vista del software sia come piattaforma di servizi per lo streaming Fluendo Embedded S.L. si occupa dello sviluppo del Fluendo Media Center conosciuto anche come Elisa. Completamente cross platform{Gira su tutti i sistemi operativi pi usati, open source e basato su GStreamer e Python4 , questo Media Center ambisce a essere una valida alternativa alle attuali oerte proprietarie. Diversi altri progetti conosciuti nell'ambiente del free software vengono attualmente sponsorizzati da Fluendo:
Pitivi, un editor video non lineare Cortado, una applet JAVA che ore una implementazione ridot-
ta e leggera di GStreamer con dei codec liberi come ad esempio Theora e Vorbis. Con questa applet, i produttori di contenuti
Programma per convertire, registrare, eettuare stream di audio e video digitali in numerosi formati 3 High Denition TV 4 Linguaggio di programmazione
28
che usano i codec free non devono preoccuparsi delle capacit del player degli utenti nali poich essa contiene gi i codec necessari
2.6.2 GStreamer
GStreamer un framework multimediale scritto in C. Fa da back-end multimediale a diverse applicazioni come editor audio o video, streaming platform e media players. Progettato per essere croos-platform, esso disponibile per Linux, Solaris, Mac OS, Windows e OS/400. GStreamer inoltre fornito di bindings per diversi linguaggi di programmazione come Python, C++, Perl, Guile e Ruby. GStreamer processa i media connettendo un numero di elementi che elaborano il usso in una pipeline. Ogni elemento fornito da un plugin. Questi elementi possono essere raggruppati e aggregati in una sorta di graco gerarchico. Un esempio pu essere un particolare ltro. I vari elementi comunicano tra di loro attraverso i pads. Un pad Source di un elemento pu essere connesso ad un pad Sink di un altro. Quando la
5
29
pipeline in stato di playing, il buer dei dati, fa uire le informazioni dal pad Source al pad Sink. compito dei pad, negoziare il tipo di dati che viene trasmesso.
Figura 2.5: Esempio di una catena di elementi di elaborazione in GStreamer Il diagramma di gura 2.5 rappesenta in maniera semplicata la riproduzione di un MP3 con GStreamer. Il plugin File legge il le mp3 dalla memoria del computer e lo manda all'elemento Decoder, il quale si occupa appunto di decodicarlo in campioni PCM, i quali vengono passati all'elemento ALSA. Quest'ultimo si interfaccia alla scheda audio del computer per riprodurre il usso di campioni PCM tramite gli speaker.
I Plugins
GStreamer usa una architettura a plugin, la quale rende la maggior parte delle funzioni del framework, implementate tramite librerie condivise. Infatti le funzionalit base di GStreamer contengono funzioni per registrare e caricare plugin e orono le fondamenta a tutte le altre classi, sottoforma di classi di base. Le librerie dei plugin possono essere caricate dinamicamente a seconda delle esigenze, per supportare un largo set di codecs, formati container, driver input/output e eetti. Fin dalla versione 0.10, i plugin vengono raggruppati in 3 grandi categorie, il cui nome stato ispirato dal famoso lm Il Buono, il Brutto e il Cattivo : Good. Questo package contiene un set di plugin di alta qualit, ben supportati, pubblicati sotto licenza LGPL. Bad. I plugin di questo set sono quelli non considerati alla pari di quelli del set Good. Possono anche essere plugin di qualit, ma sono carenti in qualcosa: scarsa documentazione, mancanza di una buona revisione del codice, pochi test eettuati. 30
Ugly. Qu troviamo plugin di alta qualit ma che hanno problemi di distribuzione, magari a causa del tipo di licenza.
31
Capitolo 3
Lo studio di registrazione Rumore Bianco, situato a Esine (BS), dotato di 3 sale di ripresa (adibite anche a sala prove) di dimensioni medie. Al piano superiore c' una sala di ripresa pi grande e una sala regia separate da un vetro insonorizzante. In principio si pensato di cablare le 3 stanze con delle telecamere, in modo da avere diversi palchi nei quali fare esibire gli artisti. Questa idea stata scartata in quanto prevedeva l'acquisto di un numero considerevole di telecamere, senza contare le dicolt tecniche di gestire tutta l'attrezzatura in modo ottimale. La scelta nale, quindi, stata quella di attrezzare una sola stanza, la pi grande, con 4 telecamere di cui 3 sse e una con operatore.
32
La proposta di acquisire i 4 ussi separati con una scheda appropriata e fare il lavoro di regia, tramite software apposito presente sul pc preposto per l'acquisizione, stata bocciata. La disponibilit di personale competente e di apparecchiature adatte (mixer video), ha reso possibile l'acquisizione di un solo usso video, il quale frutto di un lavoro di regia a valle della catena. In questo modo si toglie un notevole carico computazionale alla macchina che si occupa dell'acquisizione audio/video e del trattamento dello stream. Un altro problema costituito dall'acquisizione del segnale audio. L'obiettivo quello di registrare un evento di musica dal vivo, quindi come prima cosa, bisogna arontare le dicolt tecniche che sono di competenza del fonico. Microfonazione di strumenti, collegamento degli amplicatori, microfoni panoramici etc... vengono sistemati in base alle esigenze degli artisti che si esibiscono, mentre al ne della trasmissione live attraverso uno stream, il segnale audio, dev'essere un normale usso stereo, analogico o digitale (44100 KHz - 16 bit)1 . Il compito del fonico sar appunto quello di acquisire l'audio multitraccia proveniente dalla scena, e presentarlo in uscita secondo le speciche appena citate.
33
occupa di acquisire il usso audio stereofonico proveniente dal Mac. Questo gestisce anche l'acquisizione del usso video proveniente da un mixer video usato dal regista, e di montarlo con l'audio. Questo pc si occupa anche della compressione del media ottenuto. La compressione un'operazione necessaria, in quanto il usso originale richiederebbe un bit rate per la trasmissione troppo elevato. Il formato di compressione scelto il formato libero OGG/THEORA (OGG per l'audio e THEORA per il video).
Figura 3.1: Schema a blocchi del ussi delle informazioni multimediali La scelta di usare un sistema operativo open, cos come i codec per la compressione del media stata dettata da alcuni fattori: maggiore accessibilit ai contenuti multimediali da parte di utenti con diversi sistemi operativi (OGG/THEORA supportato dai pi diusi sistemi operativi come Windows, OSX e Linux) supporto della comunit e continui aggiornamenti del parco software nessun costo aggiuntivo per software e licenze varie La piattaforma di streaming utilizzata Flumotion. Flumotion un'infrastruttura open, ed stata scelta a scapito di altre (come ad esempio ICEcast) per il suo maggiore grado di professionalit nel gestire tutte le problematiche legate allo streaming. Fluendo solo la punta di un icebearg, infatti solo lo streaming server di una pi vasta organizzazione chiamata Flumotion Streaming Platform, la 34
quale ore servizi di encoding, streaming live, sistemi Pay per View. Fluendo anche multiformato, ovvero pu trasmettere stream in MPEG, OGG/THEORA, FLASH e WINDOWS MEDIA, quindi anche formati proprietari. Un'altra caratteristica interessante di Fluendo che fornisce anche dei server per la trasmissione Multicast. Sottoscrivendo un contratto (anche per un singolo evento) disegnato secondo le proprie esigenze di utenza, qualit dello stream e durata, si pu inviare un solo usso ai server di Fluendo i quali provvederanno a smistarlo in Multicast agli utenti nali.
35
Capitolo 4
Realizzazione e implementazione
Una volta chiari i requisiti del progetto e le disponibilt economiche, ho subito cominciato a fare un inventario della strumentazione gi disponibile in modo da avere sott'occhio il resto del materiale hardware da acquistare. Essendo uno studio di registrazione, tutto l'occorente per registrare un concerto dal vivo, gi presente. Cos come i due computer tramite i quali fare acquisizione dell'audio e del video. Il materiale mancante quindi si ridotto a: scheda di acquisizione video telecamere e supporti per il posizionamento sso materiale per cablaggi elettrici mixer video Come ho gi detto, il pc per l'acquisizione dell'audio un Mac Pro dotato di una scheda audio professionale a 24 ingressi con preamplicatori integrati. L'impatto maggiore sul costo dato dalle telecamere e dal mixer video. Lo spazio di lavoro organizzato in due stanze comunicanti attraverso un vetro fonoisolante. La sala di ripresa1 e la sala regia, dove sono situati i due computer per l'acquisizione, il mixer audio, il mixer video e il resto dell'attrezzatura per l'editing e il mastering dell'audio. Le due stanze sono separate da un muro e dal vetro insonorizzante. I cavi per collegare strumenti e microfoni passano attravero un'apposita ciabatta che si riduce ad un unico cavo multipolare, in modo che passi nelle canaline preposte all'interno del muro. Attraverso questa ciabatta passano anche i
1
36
cablaggi per le telecamere in modo da non avere cavi in giro per la stanza che posso essere d'intralcio ai musicisti o agli operatori.
37
volta. Al momento di cominciare la trasmissione c' solo da accendere il ripetitore per la messa in onda. Il pc destinato all'acquisizione video e streaming server ha le seguenti caratteristiche: CPU: Intel Pentium 4 a 2,4 GHz RAM: 512 MB Scheda di acquisizione: Brooktree bt878 a 4 ingressi Scheda audio: Terratech EWS88mt Sistema operativo: GNU/Linux Ubuntu Studio 8.10 La strumentazione per la ripresa dell'audio comprende un set di microfoni di alta qualit di vario tipo. Possiamo distinguerli in base ai loro compiti. Abbiamo microfoni panoramici, over-heads, specici per i vari elementi della batteria, microfoni per la voce, per strumenti. Tutti questi, e le varie uscite DI4 dei vari amplicatori ed eventuali tastiere entrano in un mixer analogico il quale si occupa della regolazione del gain per ogni specico elemento. Tramite apposite connessioni, chiamate insert, il segnale dal mixer viene acquisito, sempre in multitraccia (ogni strumento individua una traccia a se stante), dalla scheda audio a 24 ingressi. Il Mac pro che eettua l'acquisizione si occupa del mixaggio delle varie tracce e dell'editing preliminare di esse. L'editing prevede una prima fase di equalizzazione, compressione, applicazione di eetti tramite strumenti outboard. Inoltre questa macchina si occupa anche di fare un mixdown di tutte le tracce in modo da avere una sola traccia stereo, la quale passa in un altro outboard per la fase di mastering alla buona. A questo punto l'audio pronto per essere inviato all'altro pc e montato con il video. La catena di editing dell'audio, passa da un trattamento dei dati di tipo analogico a digitale, dal momento in cui i ussi audio entrano della scheda audio. Per evitare sensibili perdite di dinamica nel usso audio, durante tutto il percorso di elaborazione digitale si mantiene una risoluzione pari a 24 bit. Questo signica che la parola che tiene l'informazione sulla dinamica di un campione, composta da 24 bit. Questo evita fastidiosi artefatti udibili dovuti alla perdita di informazioni sulla gamma dinamica del campione digitale. L'utilizzo di questa risoluzione unita ad alcuni processi di ltraggio digitale come il dithering, permettono di ottenere un risultato altamente professionale. Questa scelta potrebbe sembrare ridondante, visto che durante lo streaming in rete, il segnale comporta una compressione lossy e comunque un alto
4
Direct input
38
deterioramento dovuto ad eventuali perdite o corruzioni dei pacchetti nella rete. In realt prevista anche la archiviazione su disco di questo materiale, per renderlo disponibile anche con altri mezzi di diusione come ad esempio DVD o CD AUDIO, dove la qualit ricercata. Per quanto riguarda le tre telecamere sse, la scelta ricaduta sulla tipologia di videosorveglianza. Queste telecamere non hanno una alta risoluzione, e non hanno nemmeno il controllo sullo zoom, ma hanno il vantaggio di essere leggere e compatte, in modo da essere posizionate comodamente in qualsiasi posto. La telecamera mobile invece un modello digitale di ultima generazione, dotata di diversi controlli ed eetti video. La connettivit presente nello studio a banda larga ed oerta da Wavetech s.r.l. tramite uno dei sui sistemi wireless. Tuttavia i requisiti di banda per eettuare uno stream con un certo bacino di utenza non sono soddisfatti da questo di tipo di connessione. Per risolvere il problema si optato per delle soluzioni ad evento. Ovvero viene stipulato un contratto con terzi che orono i loro server per fare da ripetitore dello stream. In pratica viene mandato un solo stream a questo server esterno, il quale si occupa di servire i vari utenti. Il termine ad evento dato dal fatto che le trasmissioni in streaming non avvengono 24 ore su 24, ma hanno scadenze irregolari, per la durata di due o tre ore. Per questo motivo non conveniente usufruire di soluzioni full time, ma consigliabile usufruire dei server, solo quando se ne ha eettivamente bisogno, ovvero nel momento di trasmettere l'evento live. Questa esigenza abbastanza comune, infatti i maggiori provider che orono servizi di streaming prevedono questo tipo di formula per i loro clienti.
39
La distribuzione da me scelta, Ubuntu, una derivata di Debian. Per installare la versione studio per sono necessari alcuni passaggi. necessario infatti eseguire l'installazione vanilla 5 , e poi eettuare un aggiornamento alla versione studio. Per fare questo basta installare, tramite l'apposito tool per la gestione dei pacchetti software della distribuzione (APT o synAPTic), il meta-pacchetto ubuntustudio-desktop. Il termine meta-pacchetto sta ad indicare che quello che andremo ad installare non un software, ma una intera collezione di tool per gestire al meglio le possibilit multimediali di Linux. Questo aggiornamento include un kernel real-time, per gestire in maniera snella e veloce i ussi audio in ingresso, aumentando cos le capacit di agire al volo su stream multimediali senza introdurre rallentamenti o glitch 6 introdotti da eventuali errori nella gestione non performante del usso. Altri utili strumenti forniti da Ubuntu studio sono ad esempio alcuni programmi per l'editing dell'audio sia in real-time sia non-real-time. Questi comprendono equalizzatori software, eetti DSP7 (echo, riverbero, ...), compressori, noise gate e molti altri. Con un altro semplice comando, stato anche installato lo streaming server Flumotion. Il backend GStreamer, richiesto da Flumotion, invece gi incluso nella distribuzione perch un pacchetto utilizzato da altri software che stanno alla base di Ubuntu, come ad esempio il desktop manager GNOME. Prima di eettuare la fase di congurazione, dobbiamo aver chiaro l'architettura interna dello streaming server umotion. Vediamo in dettaglio come strutturato.
40
occupano di implementare le funzionalit di streaming, altri componenti invece implementano sistemi di autenticazione, testing e altro. Ci sono tre tipi di feed: consumers, producers e converters. Il componente Producers si occupa di creare lo stream da vari elementi che possono essere una web cam, una scheda di acquisizione, un le, un segnale generato via software (segnali di test) oppure uno streaming esterno proveniente sia da server Flumotion che da un qualsiasi altro server. Il componente Converters si occupa di modicare lo stream e adattarlo secondo le esigenze (dimensione, colori, ...) e di codicarlo nel formato prescelto. Questo componente pu anche combinare dati provenienti da diversi feed e crearne di nuovi, oppure inserire in sovraimpressione delle immagini o dei video. Il componente Consumers invece si occupa di consumare lo stream, ovvero rende visibile lo stream sulla rete o lo copia su disco. Ci sono altri vari tipi di componenti. Ad esempio il bouncer implementa un sistema di autenticazione, il tester serve a creare delle congurazioni di testing del sistema. Tutti i vari componenti fanno parte di un ow. L'interconnessione di questi ow, descrive la topologia dello streaming. Gli altri componenti che non fanno parte di un feed, come il bouncer e il tester, fanno parte dell'atmosfera.
41
Il linguaggio di programmazione Python particolarmente indicato per svolgere questo tipo di compiti. Il framework Twisted ore un ottimo livello di astrazione della rete in modo da poterla gestire in modo agevole ad alto livello senza preoccuparsi delle problematiche relative ai protocolli di basso livello.
42
L'altro le di congurazione pu avere un nome qualsiasi e quindi va caricato esplicitamente facendo riferimento al percorso di esso al momento di avvio del server Flumotion. Questo le descrive i passi da fare per creare lo stream. Dall'acquisizione, alla codica e al trattamento. In pratica qu vengono congurati i componenti consumers, producers e converters. Modicando la congurazione di questo le possiamo decide quale video mandare in onda, decidendo se prendere il usso da una periferica di acquisizione, da un le, da uno stream preesistente oppure creare un segnale di test. La cosa analoga avviene per l'audio. Successivamente si deve specicare il formato di codica dello stream e di conseguenza la qualit desiderata per esso. Ovviamente la scelta del codec e della qualit va fatta tenendo conto della banda a disposizione, quindi anche del bacino di utenza, e dalle necessit puramente estetiche. In questo punto vanno anche specicate eventuali multiplazioni di diversi stream e vari elementi che possono apparire in sovraimpressione, come ad esempio un logo, o un testo. Nell'appendice A troviamo il le di congurazione usato per creare lo stream dello studio Rumore Bianco per il broadcasting sul web. In particolare possiamo vedere che il codec audio/video usato OGG/THEORA (informazioni pi dettagliate su questo formato nell'appendice B) con un bitrate di 200Kbit/s e il usso proviene dalla periferica di acquisizione che fa riferimento al device /dev/video0 9 .
43
Capitolo 5
44
Ovviamente, oltre ai requisiti multimediali, il portale contiene le varie informazioni utili per contattare e raggiungere la sede dello studio. presente inoltre un elenco delle principali apparecchiature a disposizione dei musicisti e degli operatori che si occupano della registrazione/mastering delle composizioni degli artisti che scelgono Rumore Bianco per riversare su disco le proprie idee. Il sistema php/mysql ore una serie di strumenti che rendono possibili operazioni di un certo tipo di complessit quali autenticazione e organizzazione di cataloghi multimediali. Php un linguaggio di scripting interpretato dal lato del server, il quale mette a disposizione del programmatore delle funzioni per manipolare le, creare pagine web dinamicamente, interfacciarsi a databases. Le interrogazioni e la manipolazione dei contenuti di queste basi di dati vengono eettuate tramite il server mysql, che per gli scopi di cui abbiamo bisogno, risulta performante e semplice da congurare. Vediamo ora come sono organizzate le macro-sezioni del sito.
Autenticazione
Il layer di autenticazione al sito, serve per dare i permessi per aggiungere, modicare, eliminare i vari contenuti multimediali (foto, video, audio) visibili agli utenti. Per garantire i privilegi, si usato un sistema di verica delle credenzialit del tipo username/password. Una tabella nel database contiene tutto il necessario per compiere questo tipo di verica. Inoltre le password salvate sul database non sono scritte in chiaro, ma sono criptate attraverso un algoritmo unidirezionale (hashing) chiamato md5. Questo algoritmo garantisce la segretezza della password, in quanto, dalla password in chiaro si crea un hash univoco corrispondente, mentre avendo a disposizione l'hash, non possibile ricavare la password. Questo reso possibile grazie a certi accorgimenti matematici. Php ore inoltre un set di istruzioni utili per gestire i login: le sessioni. Questo strumento permette di instaurare una sessione autenticata la quale pu durare un tempo pressato oppure no alla chiusura del sito o al logout esplicito.
45
Vediamo ora un semplice esempio che fa capire come instaurare una sessione dopo un login.
1 <?php 2 require ( 'db_conn/mysql.php ' ) ; 3 4 i f ( i s s e t ($_POST [ 'user ' ] ) ) 5 { 6 $ q u e r y _ l o g i n="SELECT * FROM tabella_utenti 7 WHERE usr='" . f i l t r a _ c a r a t t e r i _ d a n n o s i ($_POST [ 'user ' ] ) . "' 8 AND pwd='" . md5($_POST [ 'pwd ' ] ) . "'" ; 9 $ r s l t _ l o g i n=$mysqlwrapper >Execute ( $ q u e r y _ l o g i n ) o r die ( " Errore di autenticazione . " ) ; 10 11 i f ( ! $ r s l t _ l o g i n >EOF) 12 { 13 // E s i s t e un r e c o r d con q u e s t i username p i ( f i r m a ) password : 14 // i n s e r i s c o i d a t i n e l l a s e s s i o n e 15 session_start ( ) ; 16 $_SESSION [ 'Username ' ]= $ r s l t _ l o g i n >F i e l d s ( 'usr ' ) ; 17 $_SESSION [ 'Usergroup ' ]= $ r s l t _ l o g i n >F i e l d s ( 'group ' ) ; 18 header ( 'location:main.php ' ) ; 19 } 20 el se header ( 'location: login_failed .php ' ) ; 21 } 22 ?>
Osservando questo codice possiamo notare che il database viene interrogato, e come parametri gli passiamo l'username e l'hash md5 della password. Se nel database esiste un record corrispondente alla coppia username/password, il login ha successo e la sessione php viene creata col comando session_start(); . In seguito notiamo che se il login ha successo, veniamo rediretti a una pagina chiamata main.php, in caso contrario a login_failed.php. La riga $_SESSION['Username']=$rslt_login->Fields('usr'); imposta ua cosidetta variabile di sessione, ovvero una variabile che vive ntanto che la sessione attiva. In questo modo, anche se l'utente appena autenticato cambia pagina, non serve passare tramite i metodi $_GET o $_POST 1 le varie variabili, ma esse vengono tenute in memoria dal lato server. In questo modo, evitiamo il passaggio di variabili che potrebbero contenere dati sensibili (password, numeri di carta di credito, ...) tra le varie pagine,
1
46
rendendole facili prede di attacchi di tipo man-in-the-middle 2 , in cui un attaccante potrebbe riuscire a leggere queste informazioni.
L'argomento $_FILES['uploadedle'] indica il riferimento al le vero e proprio, che tramite il borwser stato inviato al server e memorizzato in una cartella temporanea. Questo le viene poi spostato tramite la funzione move_uploaded_le() nella cartella identicata dalla variabile $targhet_path. Da notare che $_FILE indica un metodo di trasmissione dei dati dal browser al server, cos come $_GET o $_POST, ma in questo caso si riferisce a dati di tipo binario, ed quindi usato per il trasferimento di interi le e non testo semplice.
2
47
48
usati dagli utenti. Questa applet si presenta gracamente simile al player in ash, in modo da avere una certa coerenza dell'interfaccia e della metafora, che in questo caso ricorda il comune videoregistratore che noi tutti abbiamo usato. Cortado non l'unico sistema per vedere gli stream live. Esistono infatti dei software stand-alone che hanno la possibilit di inserire l'indirizzo dello stream in modo da usufruirne anche senza un web browser. Esiste un considerevole numero di player in grado di decodicare nativamente il formato OGG. Vediamone alcuni, classicati per sistema operativo. Multi-piattaforma
VLC Media Player: Open Source media player e streaming Xiph Plugins per Real Player/Producer Quicktime Mplayer Open Source video player
Windows
DirectShow lter aggiunge il supporto a Ogg Vorbis, Ogg Spe Visonair.tv Player Freeware
Linux/BSD
ex, Ogg Theora, Ogg FLAC a tutti i player che supportano DirectShow, come ad esempio Windows Media Player e BSPlayer
Totem (licenza GPL) media player free basati sul motore GStream Xine: (licenza GPL) media player, completo. Ha il suo motore e
supporta un gran numero di formati Mac OS X
49
Capitolo 6
Conclusioni
La mia esperienza lavorativa alla Wavetech e al Rumore Bianco ha avuto per me un grosso valore formativo. Grazie ad essa ho potuto ampliare il mio know-how per quanto riguarda le problematiche che stanno dietro alla messa in opera di uno streaming server. Lavorare a contatto con esperti del settore stato altres stimolante, stare accanto a persone competenti nel loro campo, come nel caso della Wavetech s.r.l., mi ha permesso di portare a termine con successo la mia esperienza di stage. La maggior parte del lavoro stata per svolta all'interno dello studio Rumore Bianco, nel quale ho trovato un ambiente lavorativo confortevole. L'intero sta di tecnici dello studio di registrazione, nel particolare la persona di Piero, hanno reso il mio lavoro meno pesante, in quanto, la comunit che ruota attorno a questo piccola realt, quella dei musicisti, mi ha coinvolto su due fronti. Si quindi creato subito un clima di aatamento, in cui ogniuno ha giocato il suo ruolo. Ogni volta che ho avuto bisogno di chiarimenti o aiuti ho trovato persone disponibili e dalla mia parte, sono stato ben contento di poter dare una mano a mia volta. bello vedere che anche nelle piccole realt paesane, qualcosa si muove. C' spirito di intraprendenza e collaborazione per orire quel qualcosa in pi alle cosidette sottoculture che spesso, dalle mie parti, vengono poco considerate, ma che in realt sono uno dei motori che ci spingono a fare sempre di pi e migliorare noi stessi e il micro-cosmo che ci circonda.
50
Appendice A
I le di congurazione
A.0.1 Planet.xml
1 <p l a n e t> 2 <manager name="planet"> 3 <component name="manager -bouncer" type=" htpasswdcrypt -bouncer"> 4 <p r o p e r t y name="data">< ! [CDATA[ user:PSfNpHTkpTx1M ] ]></ p r o p e r t y> 5 </ component> 6 </ manager> 7 </ p l a n e t>
A.0.2 Cong.xml
1 <p l a n e t name="planet"> 2 <atmosphere></ atmosphere> 3 <f l o w name="default"> 4 <component name="producer -video" worker=" localhost " l a b e l="producer -video" p r o j e c t="flumotion " version="0.5.1" type ="webcam -producer"> 5 <p r o p e r t y name="format">YUY2</ p r o p e r t y> 6 <p r o p e r t y name=" framerate ">15/1</ p r o p e r t y> 7 <p r o p e r t y name="height">480</ p r o p e r t y> 8 <p r o p e r t y name="width">640</ p r o p e r t y > 9 <p r o p e r t y name="mime">v i d e o /xraw yuv</ p r o p e r t y> 10 <p r o p e r t y name="element -factory"> v 4 l 2 s r c</ p r o p e r t y>
51
11 12 13 14 15 16
<p r o p e r t y name="device">/ dev / v i d e o 0< / p r o p e r t y> <c l o c k master>t r u e</ c l o c k master> <p l u g s></ p l u g s> </ component> <component name="encoder -video" worker=" localhost " l a b e l="encoder -video" p r o j e c t ="flumotion " version="0.5.1" type=" theora -encoder"> <e a t e r name="default"><f e e d a l i a s=" default">producer v i d e o : d e f a u l t< / f e e d></ e a t e r> <p r o p e r t y name="keyframe - maxdistance ">64</ p r o p e r t y> <p r o p e r t y name=" sharpness ">0</ p r o p e r t y> <p r o p e r t y name="bitrate">200000</ p r o p e r t y> <p r o p e r t y name="noise - sensitivity ">1 </ p r o p e r t y> <c l o c k master> f a l s e</ c l o c k master> <p l u g s></ p l u g s> </ component> <component name="encoder -audio" worker=" localhost " l a b e l="encoder -audio" p r o j e c t ="flumotion " version="0.5.1" type=" vorbis -encoder"> <e a t e r name="default"><f e e d a l i a s=" default">producer a u d i o : d e f a u l t< / f e e d></ e a t e r> <p r o p e r t y name="quality">0 . 5</ p r o p e r t y> <c l o c k master> f a l s e</ c l o c k master> <p l u g s></ p l u g s> </ component> <component name="producer -audio" worker=" localhost " l a b e l="producer -audio" p r o j e c t="flumotion " version="0.5.1" type ="soundcard -producer"> <p r o p e r t y name="rate">44100</ p r o p e r t y> <p r o p e r t y name="channels">2</ p r o p e r t y> <p r o p e r t y name="depth">16</ p r o p e r t y> <p r o p e r t y name="input -track">Cattura </ p r o p e r t y>
17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33
34 35 36 37
52
38 39 40 41 42 43 44
<p r o p e r t y name="device">hw:0</ p r o p e r t y> <p r o p e r t y name="source -element"> a l s a s r c</ p r o p e r t y> <c l o c k master>t r u e</ c l o c k master> <p l u g s></ p l u g s> </ component> <component name="http -video" worker=" localhost " l a b e l="http -video" p r o j e c t=" flumotion " version="0.5.1" type="http streamer"> <e a t e r name="default"><f e e d a l i a s=" default">muxer v i d e o : d e f a u l t</ f e e d></ e a t e r> <p r o p e r t y name="mount -point">/</ p r o p e r t y> <p r o p e r t y name="client -limit">500</ p r o p e r t y> <p r o p e r t y name="burst -on -connect"> True</ p r o p e r t y> <p r o p e r t y name="port">8800</ p r o p e r t y > <c l o c k master> f a l s e</ c l o c k master> <p l u g s></ p l u g s> </ component> <component name="muxer -video" worker=" localhost " l a b e l="muxer -video" p r o j e c t=" flumotion " version="0.5.1" type="ogg muxer"> <e a t e r name="default"><f e e d a l i a s=" default">encoder v i d e o : d e f a u l t</ f e e d></ e a t e r> <c l o c k master> f a l s e</ c l o c k master> <p l u g s></ p l u g s> </ component>
45 46 47 48 49 50 51 52 53 54
53
Appendice B
Il formato OGG/THEORA
Il formato OGG un cosidetto formato container, ovvero pu contenere due ussi, uno audio e uno video. Solitamente l'audio viene codicato col codec Vorbis e il video con il Theora. OGG pu essere visto come un livello di trasporto, nel quale sono memorizzati e portati al destinatario i due ussi. La Xiph.org Foundation una compagnia non-prot che si fa carico di produrre, manutenere e supportare questa piattaforma multimediale aperta.
B.1 Theora
Theora viene usato senza dover pagare nessuna licenza. L'uso commerciale o privato di questo codec non prevede nessun esborso di denaro. Le speciche di questo formato sono di pubblico dominio e la sua implementazione completamente open source e la sua licenza permette l'inclusione in prodotti commerciali o proprietari. MPEG video, coperto da brevetto il quale genera costi di licenza e prevede l'accoppiamento com MPEG audio, quindi i costi possono ulteriormente lievitare. Theora invece pu essere associato ad un usso audio codicato in diversi tipi di formati, come ad esempio il Vorbis (spesso) oppure Speex o FLAC, ognuno dei quali free e open. Theora studiato per la trasmissione di contenuti via internet, e quindi molto facile creare uno stream con questo formato e praticamente ogni server HTTP pu farlo. Esistono infatti molte soluzioni, anch'esse free, che ci permettono di creare uno stream con Theora (e quindi OGG). Dal punto di vista tecnico, Theora ha dei buoni comportamenti anche a bitrate ridotti. infatti dotato di un ottimo deblocking lter, il quale riduce di molto il fastidioso artefatto che crea un eetto visuale a blocchi poco grade54
vole. In questo modo la qualit del video percepita, degrada dolcemente, man mano che diminuisce il bitrate. Questa una caratteristica essenziale per ogni video codec pensato per il web. Theora cross-platform. In contrasto con i codec proprietari, i quali dispongono di una documentazione pubblica scarsa. Theora invece ore la documentazione e le speciche, le quali sono sempre in continuo aggiornamento.
B.2 Vorbis
Vorbis un formato di compressione audio. comparabile ad altri formati usati per memorizzare e riprodurre la musica digitale come ad esempio MP3, AAC, VQF e altri. La dierenza sta nel fatto che Vorbis completamente libero, aperto e non brevettato. Vorbis stato studiato per rimpiazzare completamente tutti i formati audio proprietari e brevettati. Questo signica che l'utente puo codicare la propria musica o qualsiasi contenuto audio nel formato Vorbis senza guardare indietro. Come il Theora, le speciche del Vorbis sono di pubblico dominio. completamente libero per usi commerciali o non commerciali. Questo signica che gli sviluppatori commerciali posso scrivere del software compatibile con le speciche senza avere nessun ricarico per le licenze e senza nessun tipo di restrizione.
funzione reale e pari reale e pari a sua volta), dove in alcune varianti l'input e/o l'output sono traslati di mezzo campione. Per essere precisi, in Theora viene usata la trasformata discreta coseno modicata (MDCT), la quale dierisce dalla DCT solo per il fatto che esegue un overlapping ai bordi dei blocchi per evitare artefatti. In pratica riduce il pi possibile l'eetto squadrettato. Vediamo la denizione matematica della trasformata
2N 1
Xk =
n=0
xn cos
n+
1 N + 2 2
k+
1 2
(B.1)
e dell'antitrasformata
yn =
1 N
N 1
Xk cos
k=0
n+
1 N + 2 2
k+
1 2
(B.2)
Come per il JPEG, Theora utilizza questa trasformata applicandola a blocchi di dimensione 8x8 pixel, visti come se fossero inseriti in un array bidimensionale. Al contrario di altri codec, il sistema di coordinate right-handed, ovvero l'origine (0,0) posizionata in basso a sinistra. Ogni array di pixel viene suddiviso in tre piani di colore color planes, rispettivamente Y chiamato luma plane, Cb e Cr chiamati chroma planes. Ogni frame in Theora ha un altezza e una larghezza che devono essere multiplo di sedici. Per rappresentare contenuti che non hanno queste caratteristiche, abbiamo un ragione chiamata Picture che sta all'interno del frame e pu avere qualsiasi dimensione (minore o uguale a quella del frame). Il suo piazzamento all'interno della frame dato da un oset calcolato dall'angolo in basso a sinistra della frame. Ogni piano di colore suddiviso in blocchi di 8x8 pixel chiamati Blocks i quali sono raggruppati in array di 4x4 blocchi, chiamati Super Blocks. Il primo blocco quello in basso a sinistra, e la numerazione procede per righe, ovvero data una coppia di coordinate (r,c), r indica il numero della riga partendo dal basso, e c il numero della colonna partendo da sinistra. L'ordine dei superblocchi invece denito dalla curva di Hilbert il quale un sistema continuo di riempimento spaziale frattale. Vediamo l'immagine B.1 per avere un'idea. Il metodo di codica prevede il disegnamento dei blocchi per predizione, ovvero, tramite un determinato algoritmo, il blocco corrente ricostruito in 56
base allo stesso blocco appartenente al frame precedente. Ad intervalli regolari poi sono inserite le cosidette reference frame che sono completamente codicati e non predetti. La prima reference frame detta golden frame.
Figura B.1: Una curva di Hilbert di ordine 3 Ogni color plane ha una matrice di quantizzazione dei colori identicata da un indice che va da 0 a 63. Vicino a zero signica bassa qualit, vicino a 63 la qualit aumenta no alla qualit massima.
57
Bibliograa
[1] Xiph.org Foundation. http://www.xiph.org/ [2] Wikipedia. http://www.wikipedia.org/ [3] Flumotion. http://www.umotion.net/ [4] Fluendo. http://www.uendo.com/
58