Anda di halaman 1dari 59

CORSO DI LAUREA IN INGEGNERIA DELL'INFORMAZIONE

UNIVERSIT DEGLI STUDI DI BRESCIA FACOLT DI INGEGNERIA

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

WAVETECH S.r.l. Chiar.mo Prof. Nicola Adami


Correlatori:

Ing. Alessandro Pianta


ANNO ACCADEMICO 2007/2008

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

2 Principali piattaforme di streaming


2.1 2.2

13

2.3 2.4 2.5 2.6

3 Panoramica sul progetto


3.1 3.2

Il progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sopralluogo e studio di fattibilit . . . . . . . . . . . . . . . . 2

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

5 Realizzazione di un portale per la gestione e la fruizione dei contenuti multimediali 44


5.1 5.2 Il sito web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Come l'utente accede ai contenuti multimediali . . . . . . . . 44 48

6 Conclusioni A I le di congurazione


A.0.1 Planet.xml . . . . . . . . . . . . . . . . . . . . . . . . A.0.2 Cong.xml . . . . . . . . . . . . . . . . . . . . . . . .

50 51
51 51 54 55 55

B Il formato OGG/THEORA

B.1 Theora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2 Vorbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Speciche tecniche . . . . . . . . . . . . . . . . . . . . . . . .

54

Bibliograa

57

Capitolo 1

Introduzione
Fonte: http://www.wave-tech.it/

1.1 WAVETECH S.r.l.


La societ Wavetech s.r.l. nasce dall'esperienza pluriennale nel settore Information Technology dei due soci fondatori.

Wavetech s.r.l. specializzata nella progettazione e realizzazione di soluzioni


tecnologiche Hardware e Software in grado di rispondere concretamente al problema del digital divide , riuscire cio a portare connettivit a banda larga nelle zone non ancora raggiunte da ADSL via cavo.

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.

1.2 Attivit dell'azienda


1.2.1 ADSL senza li
Il servizio WMEGA possibile grazie alla presenza degli Hot Spot o Access Point di Wavetech distribuiti sul territorio in zone alte e visibili ( normal4

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.

1.2.4 Progettazione infrastrutture radio


Link punto-punto
Negli ultimi anni si avuta una forte evoluzione delle tecnologie utilizzate per la trasmissione di dati in forma digitale attraverso le onde radio. In sostanza tutte le tipologie di collegamento per il trasferimento di dati (informazioni) in forma digitale sono oggi sostituibili da connessioni radio.

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.

1.2.5 Progettazione sistemi embedded


La ricongurabilit del computing viene arontata anche in maniera nativa a livello di processore. I processori cosiddetti ricongurabili sono, in un certo senso, la versione integrata di un processore general purpose che utilizza una Fpga congurabile. Il processore ricongurabile implementa una unit di elaborazione elementare replicata in centinaia o migliaia di esemplari organizzati sotto forma di array congurabili attraverso un sistema simile a quello delle Fpga (memory-based). La dierenza sostanziale che in questo caso le unit elementari da interconnettere nell'appropriato schema hardware non sono elementi logici (come per la Fpga), ma processori elementari. Un esempio di processore ricongurabile in forma nativa il parallel processor array PC 102, capace di 42 GMac/sec. Questa prestazione garantita dalla disponibilit su chip di 240 processori a 16-bit ad architettura Harvard (3way LIW). Un esempio di ricongurabilit a grana media il Recongurable Computing Fabric di Freescale, un'architettura di calcolo scalabile basata su 16 unit di elaborazione ricongurabili per sviluppare una potenza computazionale di 24 GMac al secondo. Il Rcf di Freescale un System-on-Chip che integra sei moduli Rcf, quindi di fatto un dispositivo multicore. Ogni modulo Rcf integra un array di 16 celle dotate ciascuna di una Mac (MoltiplicatoreAccumulatore), di un'Alu dati e di un correlatore dedicato. Questo array di celle ricongurabile, rendendo il dispositivo adattabile all'applicazione e scalabile. Un processore Rcf, rispetto ad un processore Dsp, non solo pi veloce nell'esecuzione degli algoritmi di elaborazione del segnale, ma anche pi essibile in quanto l'architettura di calcolo pu essere congurata, via 9

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

1.2.6 Videosorveglianza pubblica e privata


Wavetech, in collaborazione con AXIS (azienda leader del mercato video over IP), ore sistemi ideali per la sicurezza. Wavetech ore soluzioni per ogni esigenza di denizione d'immagine, di capacit di registrazione ed adabilit con molte funzioni avanzate quali il pan/tilt/zoom a distanza, il PoE (Power over Ethernet), il wireless, risoluzioni megapixel, l'audio, il motion detection e altro ancora. La Migliore Tecnologia oggi a disposizione per soluzioni di trasmissione video in rete: Basata su standard aperti di provata stabilit Piena scalabilit e compatibilit con le infrastrutture gi esistenti Adabile e pronta per il futuro Minimi tempi di messa in opera e totale sicurezza

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.

1.3 Obiettivi del lavoro di stage


Tutti le applicazioni sviluppate da Wavetech sono oggetto, da parte mia, di notevole interesse ma in particolare il compito a me assegnato stato quello di seguire il lavoro commissionato dallo studio di registrazione Rumore Bianco. Lo studio in questione, situato a Esine (BS), il punto di riferimento della maggior parte delle band della Valle Camonica e dintorni, in quanto ore, oltre al servizio di recording, anche delle sale prove attrezzate per ogni esigenza. Rumore Bianco si appoggiato a Wavetech S.r.l. per la realizzazione di un progetto di trasmissioni in streaming sul web, di alcune performance live all'interno di queste sale. La realizzazione di questo lavoro stata adata a me ed oggetto del mio stage. Perch uno studio di registrazione dislocato in una valle montana sente la necessit di ampliare la sua oerta con un prodotto cos innovativo? semplice, perch anche in Valle Camonica, come in buona parte del mondo, ci sono giovani che hanno trovato nella musica la loro dimensione, mettendo in gioco il proprio talento, credendo nella propria creativit. Non c' aspirazione pi ambita, da singoli o da band, che esibire i frutti del prorio impegno ad una platea di ascoltatori. I conni della Valle sono stretti, pochissimi locali orono musica dal vivo e, gira e rigira, le possibilit di proporsi sono limitate; mentre dal web ti pu ascoltare e vedere tutto il mondo, a prescindere dall'apprezzamento o dal successo. Nel momento in cui mi stato presentato il progetto ho subito pensato che non potevo chiedere di meglio, poich questo stage mi permetteva di applicare la mia materia di studio, in un ambiente congeniale alla mia passione hobbistica: la musica. Io stesso, chitarrista e voce di una band, potenzialmente potrei essere un futuro fruitore di ci che ho realizzato, e questo certamente un ulteriore incentivo a fare del mio meglio. Mi stato, dunque facile, arontare il primo punto essenziale di un lavoro: capire quali sono le esigenze del committente per potergli formire quello che si aspetta, mai meno, se possibile di pi. Il secondo punto per impostare un lavoro sapere quanto il committente possa investire nel progetto, cercare materiali e applicazioni in equilibrio tra budget disponibile e qualit. 11

1.3.1 Descrizione del documento


Il presente documento organizzato in modo da rendere netta la separazione tra la parte di analisi del problema e quella di implementazione vera e propria, orendo inoltre al lettore una knowledge base per poter interpretare in modo corretto le trattazioni. In modo particolare, il capitolo 2 parte con una sorta di glossario dei termini tecnici riguardanti lo streaming. Il capitolo 3 invece, ore una carrellata delle problematiche relative all'implementazione di uno streaming server, e la soluzione proposta. L'implementazione eettiva viene trattata nel capitolo 4, nel quale vi anche una descrizione della congurazione del software. La realizzazione di un portale per la fruizione dei contenuti multimediali da parte dell'utente nale trattata nel capitolo 5. Nelle varie appendici troviamo degli approfondimenti. Nel particolare troviamo un esempio concreto di le di congurazione del server Flumotion nell'appendice A, mentre nell'appendice B vi una descrizione dettagliata del formato libero OGG e dei cenni alle speciche tecniche del codec Theora.

12

Capitolo 2

Principali piattaforme di streaming


2.1 Alcuni termini
Multimedia Framework
Un multimedia framework (MMF) un framework software per gestire i media su un computer o attraverso una rete. Un buon multimedia framework ore delle API (interfaccie per i programmi) intuitive e un'architettura modulare in modo da poter facilmente aggiungere il supporto a nuovi codec, formati e protocolli di trasmissione. Il multimedia framework principalmente usato da media players, editor audio o video, ma pu anche essere usato per creare delle applicazioni di videoconferenza, convertitori tra vari formati di media, streaming di contenuti multimediali e molti altri strumenti che hanno a che fare con diversi tipi di media.

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

Content Delivery Network (CDN)


Un Content Delivery Network (o Content Distribution Network) un sistema di computer interconnessi tra di loro tramite una rete attraverso internet che cooperano in modo trasparente, per trasmettere contenuti. Lo scopo principale quello di migliorare le performance, la scalabilit e ridurre i costi per l'utente nale. Un esempio la rete BitTorrent.

14

2.2 Cos' lo streaming di contenuti multimediali


Per Multimedia Streaming si intende la ricezione in modo costante di un contenuto multimediale (audio/video). Questo usso creato da uno streaming provider e viene ricevuto da un utente nale. La distinzione delle varie classi di stream avviene in base al contenuto degli stessi (audio, video, audio+video, ...) ed indipendente dal mezzo tramite il quale arrivano al destinatario (rete, radio, televisione, ...). Le tecnologie di streaming sono importanti in quanto consentono di gestire l'accesso a le multimediali di notevoli dimensioni in maniera veloce anche ad utenti che non hanno l'accesso ad internet particolarmente performante. Utilizzando questa tecnologia, il browser o il player dell'utente (le applicazioni in grado di riprodurre lo stream che viene ricevuto) pu cominciare a riprodurre i dati prima che il le sia stato completamente scaricato. Tipicamente i dati ricevuti dal client vengono accodati in un buer dal quale vengono successivamente letti in modo costante dall'applicazione. In questo modo, se per qualche ragione il usso presenta delle irregolarit, degli errori o delle interruzioni momentanee, la fase di presentazione non viene compromessa. Se il buer non sucientemente grande per compensare queste irregolarit, si avvertiranno delle discontinuit anche in fase di riproduzione.

2.2.1 Fasi per ottenere uno stream


La realizzazione di uno streaming, sia per l'erogazione live che on-demand. richiede diverse fasi di lavoro: Acquisizione: una sorgente audio/video (telecamera, video registratore, ...) deve essere collegata ad un sistema di acquisizione che tipicamente consiste in un PC dotato di una scheda di acquisizione audio/video Codica: il segnale acquisito deve essere codifcato in un formato erogabile in modalit streaming Caricamento: il contenuto in streaming prodotto deve essere caricato su un server in grado di erogarlo secondo la modalit streaming. A seconda del formato di codica adottato esistono vari applicativi in grado di gestire il contenuto Pubblicazione: viene creata una pagina web che referenzia il contenuto audio/video presente sul server di streaming Erogazione: l'utente che si collega tramite web alla pagina dove stato pubblicato il contenuto audio/video inizier a fruire dello streaming mediante il player opportuno 15

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.

2.2.2 Sistemi di trasmissione via web


Le principali applicazioni delle trasmissioni video sul web sono: Video On Demand (VOD). Una raccolta di le video memorizzata in un server. Ogni utente pu scegliere e vedere il video desiderato selezionandolo da un menu pubblicato su pagine web ( come scegliere e vedere una videocassetta in remoto tramite la rete, con possibilit di mettere in pausa, ripartire, riavvolgere) Web-TV. Consente di trasmettere una sequenza di contenuti video, deniti da un palinsesto, che possono comprendere le memorizzati su server e riprese in diretta (video live). Gli utenti che si collegano vedono le immagini trasmesse in quel momento, proprio come guardare una TV, senza la possibilit di controllare il usso (mandare avanti, riavvolgere) IPTV. Molto simile al concetto di Web-TV, ma questo termine usato per identicare trasmissioni in internet tramite protocolli proprietari. L'utente pu ricevere queste trasmissioni con degli appositi set-top-box collegati al televisore, mentre la Web-TV associata alla ricezione sul pc. Videoconferenza. Pi utenti si vedono e si parlano reciprocamente. Digital Signage. Soluzione ottimale per gestire contenuti multimediali pubblicitari trasmessi a PC remoti, che li visualizzano su grandi display installati in ambienti aperti al pubblico (hall, supermercati, strade, ...) Videosorveglianza. Una rete di telecamere per scopi di sorveglianza, invia in tempo reale le immagini a un punto centrale, il quale si occupa di monitorare, registrare, registrare solo in caso di movimento (motion capture).

Caratteristiche delle diverse applicazioni Video on demand


una trasmissione:

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

sistema per erogare servizi video interattivi a pagamento.

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

2.2.4 Larghezza di banda e storage


La dimensione (in termini di byte) di un media per lo streaming, calcolata in base alla larghezza di banda per lo stream e alla lunghezza del media stesso, come nella seguente formula. dimensione (MB) = lunghezza (secondi) bit rate (Kbit/s) (8 1024)

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.

2.2.5 Protocolli per lo streaming


Sviluppare un protocollo di rete per lo streming non cosa semplice. Vediamo quali scelte possiamo adottare.

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

Figura 2.2: Flusso dei dati nel protocollo multicast

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.

2.3 Windows Media


Windows Media un multimedia framework per la creazione e distribuzione di media per l'ambiente Microsoft Windows. In pratica un software development kit che dispone di svariate API e diverse tecnologie preconfezionate Esso si divide in 3 principali applicazioni: Windows Media Player - riproduzione di media Windows Media Encoder - strumenti per la codica/decodica dei formati dei media Windows Media Services - streaming media server Di particolare interesse per lo streming sono i Windows Media Services (WMS). Questo il server per lo streaming di contenuti multimediali di Microsoft. Esso permette di generare dei media stream (audio e video). Solamente i formati Windows Mediam JPEG e MP3 sono supportati. Oltre allo streaming, WMS permette anche di registrare gli streams, fornisce sistemi di autenticazione, impone vari limiti di connessione, si appoggia su diversi protocolli, pu generare statistiche sul traco e ha un metodo di correzione degli errori (FEC). Pu inoltre gestire un alto numero di connessioni concorrenti e pu funzionare in unicast e in multicast (gli stream multicast possono anche usufruire di un sistema di crittazione). Tipicamente viene 24

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

questi le anche in Internet Explorer.

Formati supportati Input


UDP/RTP unicast o multicast, HTTP, FTP, MMS, RTSP, DVDs, VCD, SVCD, CD Audio, DVB, Acquisizione video (via V4l e DirectShow), RSS/Atom Feeds, e da le presenti sul computer.

Container formats Video formats

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

AAC, AC3, DV Audio, FLAC, MP3, Speex, Vorbis

Protocolli di streaming

UDP, HTTP, RTP, RTSP, MMS, File

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.

2.5.2 Principali caratteristiche

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

General Public License

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

 Theora, un codec libero.  Speciche RTP5 per Theora Vorbis

Figura 2.4: Esempio di streaming multiformato

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

Real-time Transport Protocol

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.

2.6.3 Flumotion Streaming Platform


La Flumotion Streaming Platform una CDN6 che supporta i pi importanti formati come Windows Media, Mp3 o Flash, cos come gli standard open Ogg Vorbis e Ogg Theora. In questo modo, si riesce ad avere la copertura di praticamente il 100% degli utenti che usano diversi sistemi operativi (Windows, Mac, Linux, ...). Grazie a questa tipolgia di infrastruttura di rete, possibile trasmettere stream multiformato. Questo signica che l'utente ha completa libert di scelta sul formato dello stream. In base a questa scelta l'utente viene rediretto sul server che fornisce lo stream in quel formato specico.

Content Delivery Network

31

Capitolo 3

Panoramica sul progetto


3.1 Il progetto
Il mio progetto di stage nasce dall'esigenza dello studio di registrazione RUMORE BIANCO, di registrare e mandare in streaming, sia live sia on demand, degli eventi che si svolgono all'interno delle sale di questo studio. L'idea di fondo quella di utilizzare le sale prova e le sale di registrazione, come un palco scenico, sul quale si esibiscono vari artisti. Le loro performance vengono lmate e rese disponibili al pubblico che potr godersi lo spettacolo standosene comodamente seduto a casa sua.

3.2 Sopralluogo e studio di fattibilit

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.

3.3 Soluzione proposta sulla base dei requisiti


Una volta focalizzati gli obiettivi, la mia soluzione proposta a Piero (titolare dello studio Rumore Bianco) stata la seguente.

3.3.1 Materiale hardware e software


Un mixer video manovrato da un operatore, si occupa di miscelare le 4 diverse sorgenti video delle quali una mobile. Un Mac Pro dotato di scheda audio MOTU2 a 24 ingressi e convertitori ADC a 96 KHz - 24 bit preposto per l'acquisizione e trattamento dell'audio, il quale fornisce in uscita un segnale stereo analogico. L'audio in uscita verr trattato in modo da ottenere una sorta di master delle performance live. Per ottenere un master vero e proprio bisogna eettuare operazioni di editing e di post processing dell'audio che richiedono tempo. Le esigenze di trasmissione dal vivo rendono impossibili queste operazioni, quindi il fonico cercher di trattare l'audio quel tanto che basta per ottenere un mixaggio con una buona pasta sonora. Un secondo pc con sistema operativo GNU/Linux (Ubuntu Studio 8.04)3 si
1 Qualit di un CD Audio 2 marchio noto per le sue schede 3

di qualit distribuzione pensata per studi multimediali

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

Dove suonano i musicisti

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.

4.1 Risorse hardware


Guardando la gura 3.1 si pu intuire la topologia dell'infrastruttura di acquisizione e trattamento audio/video. L'organizzazione delle risorse a disposizione prevede la presenza di un certo numero di operatori per la messa in onda dello stream. La struttura di per se molto semplice, e per quanto riguarda la messa in onda tende ad automatizzare tutto il processo. Per quanto riguarda la fase di acquisizione invece, le operazioni richiedono del personale. Vediamo meglio in dettaglio. La presenza di un operatore al mixer video non fondamentale, in quanto, in base alle esigenze della trasmissione, si pu pensare che un lavoro di regia sia superuo. Le tre telecamere sse, appunto non richiedono operatore, ma la camera mobile si. Inoltre il banco mixer audio e il Mac per l'acquisizione audio, richiedono la presenza di almeno un operatore, per svolgere le fasi di messa a punto dei suoni e le continue correzioni che una scena live richiede. In modo particolare, questa mansione ha come requisto, l'ottima preparazione del tecnico che segue questo compito. infatti nelle sue mani la responsabilit di rendere fruibile con una certa qualit, il pi possibile fedele a quello che la scena, il materiale audio, ma deve farlo live, ovvero in diretta, senza le enormi possibilit che ha chi lavora in post-produzione2 . Per quanto riguarda il pc per l'acquisizione video e trattamento dello stream, non richiesto nessun personale tecnico. Serve solo un regista che dia il segnale di Ciak, si gira. Questo possibile perch le operazioni di acquisizione dell'audio e del video, la multiplazione3 di essi, la compressione in un formato adatto per lo streaming e la creazione dello stream stesso, vengono fatti in modo automatico. L'automatizzazione di queste operazioni resa possibile grazie alla alta congurabilit del sistema Flumotion in ambiente GNU/Linux. Infatti, una volta creata la congurazione ottimizzata per ogni componente, risulta facile ed intuitivo, richiamare questi settaggi con un paio di click, in modo che la parte onerosa e che richiede certe conoscenze tecniche, venga fatta una sola
Su ussi registrati, con possibilit di eettuare pi prove per scegliere la soluzione ottimale 3 montare l'audio sul video
2

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.

4.2 Installazione e congurazione del software


La parte riguardante l'acquisizione dell'audio e conseguente congurazione della workstation, scheda audio, collegamenti etc... gi stata fatta in precedenza da Piero, il quale lavora con questa macchina anche per registrare sia live che in studio. Infatti la sua congurazione stata pi volte testata e, grazie anche alla sua esperienza, ottimizzata per svolgere il lavoro nella maniera migliore. L'ultimo intervento quello di attrezzare il pc per lo streaming server. Come gi detto il sistema operativo GNU/Linux Ubuntu Studio 8.10. L'installazione di questo abbastanza facile e non comporta grosse conoscenze. Ormai i tempi in cui per installare Linux bisognava essere un hacker sono niti, favorendo cos la diusione di questo sistema operativo sicuro e stabile, nelle sue innumerevoli varianti per tutti i gusti.

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.

4.2.1 La struttura del server Flumotion


A pi alto livello abbiamo una entit chiamata Planet. Il planet costituito da un manager, una atmosphere e uno o pi ows. Il manager ha il compito di gestire i vari ows. Ogni usso contiene dei componenti chiamati feed, i quali sono connessi tra loro per creare gli streams. Visto un po pi a basso livello, un plantet implementato attraverso dei demoni8 in esecuzione su una macchina. Uno di questi demoni ha l'incarico di fare da manager per il planet. Poi ci sono uno o pi worker che si connettono al manager e hanno il compito di dire al manager quando e come far partire i vari componenti. Scendendo ancora di livello vediamo diversi componenti, come i feed che si
5 versione base standard 6 rumori di fondo, scricchiolii 7 Digital Signal Processor 8

termine per indicare programmi che girano in background

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.

4.2.2 Il motore di Flumotion


Flumotion si ada a due tecnologie per amalgamare il tutto.Il ivello di astrazione per la rete fornito da Twisted. Lo streaming e le operazioni sui dati multimediali sono a carico di GStreamer, il quale processa e fornisce lo stream. Esso in grado di elaborare grosse quantit di dati, e infatti costituisce la parte che pesa di pi in termini di potenza di calcolo, per questo motivo ha bisogno di essere molto ottimizzato. Proprio per venire in contro a questo requisito, stato scritto in C ed largamente testato poich utilizzato in molti altri progetti software. Come gi detto, GStreamer basato su una architettura a pipeline, tramite la quale sono collegati i diversi elementi di elaborazione, permettendo al usso di dati multimediali di passare attraverso essi. La parte utilizzata da Flumotion sucientemente ottimizzata da permettere l'elaborazione di grosse quantit di dati e di un numero considerevole di clients contemporanei. Tutte le funzioni che implicano l'uso della rete invece, sono scritte in Python usando Twisted. Processi come il setup della sessione, connessione al client o l'autenticazione, sono aperazioni non continue. Esse infatti vengono eseguite nelle fasi preliminari della fruizione di uno stream, il loro peso computazionale infatti molto ridotto.

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.

Figura 4.1: Uno sguardo all'architettura modulare di Twisted

4.2.3 I le di congurazione


Per GStreamer non occorre congurare nulla, in quanto si occupa Flumotion di creare i bindings per interfacciarsi al framework. Per il server Flumotion invece, abbiamo due le di congurazione. Entrambi vanno scritti usando il metalinguaggio XML. Questo facilita la scrittura e anche l'interpretazione del le in quanto la struttura di un le XML, anche dal punto di vista gerarchico, di immediata comprensione. Il primo le chiamato planet.xml, il quale descrive come il manager deve gestire il planet. In questo le troviamo le direttive per il setup della connessione, ad esempio come utilizzare il componente bouncer per avere un sistema di autenticazione. Per avere un'idea di una possibile tipica congurazione del le planet.xml fare riferimento all'appendice A.

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 .

Nomenclatura UNIX per le periferiche che funzionano con i driver Video4Linux

43

Capitolo 5

Realizzazione di un portale per la gestione e la fruizione dei contenuti multimediali


Una volta creato lo stream, si presentata la necessit di rendere questi contenuti fruibili da parte degli utenti. Questa esigenza, unita al fatto che lo studio Rumore Bianco aveva bisogno di un sito web per farsi conoscere, ha fatto materializzare l'idea di creare un portale che unisse queste due peculiarit.

5.1 Il sito web


L'intero portale usa come motore la collaudatissima accoppiata php/mysql, il tutto installato su un server GNU/Linux. Questa scelta supportata dall'esigenza di avere dei contenuti dinamici, in continua evoluzione. Il sito non incorpora soltano il necessario per mostrare lo stream live, ma ha un sistema di fruizione di contenuti on-demand. Questi contenuti variano da semplici samples audio di canzoni registrate nello studio, a video di esibizioni e fotograe di vari eventi organizzati da Rumore Bianco. Per l'utente, la consultazione avviene come un comune portale che ore contenuti multimediali, Quindi prevede un sistema di browsing basato sul tipo di media o su keywords (tag) che identicano un particolare evento. La parte di gestione di questi contenuti, avviene completamente attraverso il sito. Una layer di autenticazione si occupa di dare agli utenti autorizzati, la facolt di aggiungere nuovi contenuti, eliminarli o organizzarli in diverse categorie.

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

Metodi per passare le variabili ad una pagina web

46

rendendole facili prede di attacchi di tipo man-in-the-middle 2 , in cui un attaccante potrebbe riuscire a leggere queste informazioni.

Upload contenuti multimediali


L'inserimento del materiale multimediale completamente gestito dall'interfaccia web disponibile previa autenticazione. Anche in questo sono molto utili le funzioni del php, il quale ci permette, attraverso semplici comandi, di trasferire sul server che ospita il sito, i vari le audio/video/foto, in modo da essere consultati dai visitatori. Di seguito riportato uno stralcio di codice php che mostra una possibile soluzione per eettuare l'upload di le.
1 <?php 2 $ t a r g e t _ p a t h = "uploads/" ; 3 4 $ t a r g e t _ p a t h = $ t a r g e t _ p a t h . basename ( $_FILES [ 'uploadedfile ' ] [ 'name ' ] ) ; 5 6 i f ( move_uploaded_file ( $_FILES [ 'uploadedfile ' ] [ 'tmp_name ' ] , $target_path ) ) { 7 echo "Il file " . basename ( $_FILES [ 'uploadedfile ' ] [ 'name ' ]) . 8 " stato inviato con successo" ; 9 } els e { 10 echo "Errore durente il trasferimento del file" . basename ( $_FILES [ 'uploadedfile ' ] [ 'name ' ] ) . 11 ". Prova ancora!" ; 12 } 13 ?>

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

Nome di uno dei pi comuni attacchi informatici eettuati dagli hackers

47

Figura 5.1: Screenshot del form web di upload di le video

5.2 Come l'utente accede ai contenuti multimediali


La struttura del portale, e gli strumenti che esso ore, sono pensati per essere platform indipendent. Questo signica che non ci sono limitazioni sul tipo di sistema operativo o sul browser che l'utente utilizza per accedere ai contenuti multimediali. Per i le di tipo audio stato utilizzato un media player sviluppato in ash, il quale ore semplici comandi per il controllo del usso come ad esempio Play, Stop, Pausa. Essendo Flash un plugin per browser sviluppato anch'esso per essere multipiattaforma, apparsa subito la soluzione ideale. Lo stesso player usato anche per eseguire i le video che vengono presentati all'utente tramite streaming on-demand. Come gi detto nel capitolo 2.4, Flash, supporta nativamente questo tipo di streaming. Per gli stream di tipo live invece, si pensato ad una soluzione dierente. Essendo in formato OGG, la soluzione pi confacente quella di utilizzare un'apposita applet scitta in Java direttamente dai creatori di Flumotion. Questa applet si chiama cortado. Il Java, un linguaggio di programmazione interpretato, e la macchina virtuale per interpretare questo linguaggio sviluppata da Sun in modo da essere multipiattaforma, quindi anche in questo caso non si creano problemi di eterogeneit dei sistemi operativi

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

server che supporta virtualmente ogni tipo di formato audio e video

 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

 Helix Player un player open source per Linux, Solaris e sistemi


Symbian basati sul motore Helx DNA Client er o Xine

 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

 Xine: (licenza GPL) media player, completo. Ha il suo motore e


supporta un gran numero di formati

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

55 56 57 58 59 </ f l o w> 60 </ p l a n e t>

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.

B.3 Speciche tecniche


Il formato Theora di tipo lossy ovvero, per la compressione elimina alcune parti di informazione che sono considerate non necessarie, ma che per sono componenti del usso video. Supporta un bitrate no a 2Gbit/s e una risoluzione di ben 10485601048560. L'algoritmo usato per la compressione la trasformata discreta coseno (Discrete Cosine Transform, DCT). La DCT provvede alla compressione spaziale, capace di rivelare le variazioni di informazione tra un'area e quella contigua trascurando le ripetizioni; la funzione che supporta la compressione temporale adata invece ad un apposito vettore movimento che individua le componenti dinamiche tralasciando quelle statiche. una trasformata simile alla trasformata discreta di Fourier (DFT), ma fa uso solo di numeri reali. equivalente a una DFT di lunghezza circa doppia, che opera su funzioni reali e pari (dato che la trasformata di Fourier di una 55

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

Anda mungkin juga menyukai