Streaming Audio/Video su Architettura Service-Oriented OSGi

Pagina creata da Giorgio Romano
 
CONTINUA A LEGGERE
Streaming Audio/Video su Architettura Service-Oriented OSGi
ALMA MATER STUDIORUM – UNIVERSITÀ DI BOLOGNA
                           SEDE DI CESENA
      SECONDA FACOLTÀ DI INGEGNERIA CON SEDE A CESENA
            CORSO DI LAUREA IN INGEGNERIA INFORMATICA

                        TITOLO DELL’ELABORATO

Streaming Audio/Video su Architettura Service-Oriented
                                 OSGi

                               Elaborato in
                          Sistemi Distribuiti L-A

Relatore                                            Presentata da
Ing. Andrea Omicini                                 Claudio Buda

Co-Relatore
Ing. Alessandro Ricci

                               Sessione Iª
                        Anno Accademico 2002/03
Streaming Audio/Video su Architettura Service-Oriented OSGi
Indice                                                              Buda Claudio
______________________________________________________________________________

Indice
 CAPITOLO 0: Prologo ..................................................................................................................5
    Introduzione ................................................................................................................................5
    Obiettivo tesi ..............................................................................................................................5
 CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale ...............................6
    Problema ....................................................................................................................................6
    Cos’è un’Architettura di Servizi ...............................................................................................7
    Framework OSGi .......................................................................................................................8
    OSGi in ambito domotico .......................................................................................................11
    Streaming Audio/Video...........................................................................................................12
       RealNetworks.......................................................................................................................13
       Microsoft ...............................................................................................................................13
       Apple .....................................................................................................................................14
       JMF ........................................................................................................................................15
       MMAPI...................................................................................................................................15
 CAPITOLO 2: Analisi ..................................................................................................................16
    Obiettivo tesi a livello d’analisi. .............................................................................................16
    Gestione dei Servizi e del loro comando .............................................................................16
       Esempio Telecamera-Televisore gestibili da PDA.........................................................17
    Use Case ..................................................................................................................................20
    Approfondimento sui servizi ‘dispositivo’.............................................................................25
    Nuova visione: dai servizi “dispositivo” ai servizi “trasmissione e ricezione”.................26
    Ritornando allo Use Case… ..................................................................................................27
 CAPITOLO 3: Progetto ...............................................................................................................29
    Obiettivo tesi a livello di progetto ..........................................................................................29
    Come si crea un Bundle?.......................................................................................................29
    Cos’è un proxy? .......................................................................................................................31
       RMI ........................................................................................................................................31
    Bundle acquisizione/trasmissioneAV (CaptureAV)............................................................32
       Installazione .........................................................................................................................33
       Servizio .................................................................................................................................33
    Bundle ricezione/riproduzioneAV (PlayAV).........................................................................34
       Installazione .........................................................................................................................35
       Servizio .................................................................................................................................35

                                                                                                                                                   2
Streaming Audio/Video su Architettura Service-Oriented OSGi
Indice                                                              Buda Claudio
______________________________________________________________________________

    Ritornando allo Use Case… ..................................................................................................37
    Multicasting ..............................................................................................................................39
    Uno sguardo ai servizi con un occhio JAVA .......................................................................39
       Servizio captureAV..............................................................................................................39
       Servizio playAV....................................................................................................................41
 CAPITOLO 4: Il protocollo RTP ................................................................................................45
    Streaming Multimediale ..........................................................................................................45
    Protocolli per Media Streaming .............................................................................................45
    Real Time Transport Protocol ...............................................................................................46
    Servizi RTP...............................................................................................................................46
    Architettura RTP ......................................................................................................................47
       Pacchetti dati........................................................................................................................47
       Pacchetti di controllo ...........................................................................................................48
    Applicazioni RTP ....................................................................................................................49
 CAPITOLO 5: Studio delle performances del sistema ..........................................................50
    Scelte.........................................................................................................................................50
    Scalabilità .................................................................................................................................50
    Sicurezza ..................................................................................................................................50
    Robustezza ..............................................................................................................................51
    Ridondanza ..............................................................................................................................51
    Universalità ...............................................................................................................................51
    Sincronizzazione in politiche di multicasting .......................................................................51
    Mixaggio Audio/Video.............................................................................................................52
 CAPITOLO 6: Implementazione & Testing .............................................................................53
    Steps .........................................................................................................................................53
    Bundle CaptureAV ..................................................................................................................54
       Test 1.....................................................................................................................................57
    Bundle PlayAV .........................................................................................................................57
       Test 2.....................................................................................................................................60
    Costruzione interfaccia grafica e rilevamento servizi ........................................................60
       Modifica implementativa per la visualizzazione locale ..................................................61
       Test 3.....................................................................................................................................62
    Classe del servizio captureAV ..............................................................................................63
    Classe per la Trasmissione multimediale ............................................................................64

                                                                                                                                                   3
Streaming Audio/Video su Architettura Service-Oriented OSGi
Indice                                                              Buda Claudio
______________________________________________________________________________

       Test 4.....................................................................................................................................67
    Classe del servizio PlayAV ....................................................................................................68
    Classe per la Ricezione multimediale ..................................................................................68
       Test 5.....................................................................................................................................70
    Mixaggio Audio e Video..........................................................................................................71
       Test 6.....................................................................................................................................72
    Proxy del servizio captureAV ................................................................................................72
       Test 7.....................................................................................................................................73
    Proxy del servizio playAV ......................................................................................................73
       Test 8.....................................................................................................................................74
    Variante distribuita ..................................................................................................................74
       Test 9.....................................................................................................................................74
 CAPITOLO 7: Epilogo ................................................................................................................75
    Conclusioni e Ringraziamenti ................................................................................................75
    Bibliografia................................................................................................................................76
    Indice delle figure ....................................................................................................................77

                                                                                                                                                  4
CAPITOLO 0: Prologo                                                Buda Claudio
______________________________________________________________________________

CAPITOLO 0: Prologo

Introduzione
Il tema della distribuzione di servizi è più che mai oggi sentito dalla comunità scientifica e
chiunque si appresti a leggere questa tesi si troverà ad affrontare argomenti notevolmente
attuali e specializzati. Perciò con questa piccola prefazione si intendono focalizzare i punti
salienti della trattazione del testo. L’ambiente è quello domotico, ma nulla toglie la
possibilità di esportare il lavoro svolto in qualsiasi altro ambito distribuito. Il sistema
concepito è composto da dispositivi domestici con elevata capacità computazionale in
comunicazione fra loro tramite una qualsiasi rete. A livello superiore un’architettura
distribuita permette ad ogni entità di comunicare con un linguaggio comune: la fornitura e
l’utilizzo di servizi. È in questo contesto che la tesi contribuirà ad accelerare l’evoluzione di
un inequivocabile tipo di servizio, quello che permette lo streaming audio e video. Si
passerà perciò a progettare una categoria di servizi in ottemperanza con l’architettura e
tutto ciò che ne concerne, abile a fornire capacità e strumenti per distribuire audio-visione
nel sistema in cui si opera.
L’architettura di servizi scelta sarà quella definita dall’infrastruttura OSGi Framework
implementabile tramite programmazione JAVA di SUN Microsystem. I mezzi per gestire lo
streaming all’interno dei servizi saranno forniti dal framework JavaMedia, un pacchetto
aggiuntivo della SUN, che utilizza il protocollo RTP per la trasmissione di dati multimediali.

Obiettivo tesi

L’obiettivo sarà perciò sviluppare in maniera “ingegneristica” servizi che consentano il
traffico di audio e video per una architettura pensata all’interno delle abitazioni. Lo
svolgimento avrà come primo target la presa di coscienza delle alternative sia architetturali
che implementative; in seguito si passerà ad una progettazione svincolata da termini di
sviluppo a basso livello, per arrivare alla fase operativa con la massima libertà.
Quest’ultimo processo porterà allo produzione di prototipi applicabili al contesto di
riferimento.

                                                                                               5
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

CAPITOLO 1: Problemi e tecnologie in ambito domotico
multimediale

Problema

Oggi, con le nuove tecnologie che avanzano , la domotica non è più un fantasioso sogno
ma un po’ alla volta comincia a divenire realtà, inserendo in continuazione nelle abitazioni
qualche frammento in più che la riguarda. Già non è strano avere in casa una rete
domestica (LAN) basata su protocollo TCP/IP, magari come collegamento fra solamente
due postazioni ma facilmente ampliabile a più. Inoltre anche i servizi per la comunità
odierna passano sempre di più per questo percorso tecnologico, ed un lampante esempio
è internet, offrendo la possibilità di comprare, vendere, conoscere e divertirsi tutto
comodamente dalla scrivania di casa propria. Ma la domotica non è solo questo. Per
domotica si intende l’informatizzazione della “domus” perciò la possibilità di fare diventare
più intelligenti tanti strumenti che accompagnano la vita di tutti giorni. Lavatrici, impianti
luce, frigoriferi, computer, palmari e cellulari, oramai sono tutti collegabili tra loro
permettendone il dialogo reciproco all’interno della casa o anche dall’esterno tramite
internet.
Un’altra tecnologia che comincia a pervadere la realtà quotidiana è la video-
comunicazione. Pubblicità, messaggi personali, offerte e informazioni, se un tempo
venivano scambiati tramite carta, in seguito soppiantata dalla telefonia, oggi la video-
comunicazione sta aprendo le porte ad una nuova era. Sempre più imprese affermano la
loro presenza su internet avvalendo i loro portali di messaggi visivi, veri e propri filmati che
alla pari della televisione tentano di influenzare l’ipotetico cliente. Unendo video-
comunicazione a domotica si sente l’esigenza di stabilire delle regole per comunicare con
dati visivi e acustici all’interno della casa.
Se invece che inserire dispositivi intelligenti in casa e tentare di farli comunicare, si
ribaltasse la visuale, bensì costruire un’infrastruttura di comunicazione all’interno della
casa e sopra a questa impiantare i dispositivi, allora ci si troverebbe ad affrontare un tema
molto sentito al giorno d’oggi. Infatti in ambiente domestico, ma anche in altre realtà
(intelligence on board per auto), ci si sta indirizzando ad una linea comune che permetta di
vedere la casa come un mercato di servizi dove c’è chi li offre e chi li usa. Si è sentita così
l’esigenza di definire un’architettura (SOA: Service Oriented Architecture), una struttura

                                                                                              6
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

che può appoggiarsi ad una rete fisica, indipendente da sistemi operativi, che permette ad
applicazioni di comunicare attraverso lo scambio di servizi che ogni ente (nel seguente
caso si tratta di devices domestici) mette a disposizione per gli altri. L’astrazione dal
sistema operativo è possibile attraverso la Java Virtual Machine che una volta installata
permette alle applicazioni scritte in linguaggio Java di “girare” senza preoccuparsi di cosa
risiede a livello sottostante (Windows, Unix, Macintosh, Solaris).
Ma come un’architettura di servizi può influenzare la video-comunicazione domestica?
Con video-comunicazione domestica innanzitutto si intende una qualsiasi comunicazione,
che coinvolge immagini, sequenze visive e audio, perciò sia dispositivi di cattura
(videocamere e microfoni) che di riproduzione (qualsiasi schermo che lo permetta, dal
televisore al palmare). Perciò risultano già definiti i dispositivi presenti in un’architettura
domestica che hanno bisogno di scambiare servizi per il trasferimento di dati audio/video.
Saranno proprio questi devices che utilizzeranno l’architettura di servizi per comunicare tra
loro permettendo lo scambio di dati multimediali.

Cos’è un’Architettura di Servizi

Quali sono le tecnologie nate negli ultimi anni atte ad implementare architetture software in
grado di fare comunicare in un sistema distribuito componenti diversi fra loro? Si sta
parlando di queste architetture che seguono lo standard di progettazione orientata ai
servizi, che il paradigma SOA definisce nei suoi aspetti più vincolanti. In termini semplici,
una architettura orientata ai servizi, fornisce un modello di progettazione standard, che dà
la possibilità a componenti software, accoppiati in modo lasco e che si trovano in una rete,
di pubblicare le loro funzionalità, di essere ricercati e utilizzati, e di essere composti da tutti
gli altri attraverso la rete. Ogni applicazione costituita da servizi distribuiti, può interagire
con ogni altra applicazione basata sui servizi, senza preoccuparsi della locazione e
soprattutto del “protocollo” di comunicazione, ma basandosi solamente sul contratto
stipulato e sulla interfaccia. Questa tecnologie di cui andremo a parlare si basano su Java
per ottenere sistemi e servizi indipendenti dalla piattaforma su cui girano, per cui parlando
di interfacce, oggetti e classi si intendono interfacce, oggetti e classi Java. Risulta
fondamentale spiegare ora il perché di un’architettura tale. Sostanzialmente è un nuovo
modo di vedere le applicazioni software; gli attuali metodi di produzione di sistemi software
risultano troppo lenti e poco reattivi ai continui “spostamenti” del mercato. Quello che è
richiesto al sistema software, è che rispetti determinati requisiti, quali: flessibilità,
dinamicità, robustezza e qualità. Non è più possibile pretendere di costruire un sistema
                                                                                                 7
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

che, dopo il suo rilascio, non necessiti più di modifiche. Un sistema basato sui servizi è
innovativo proprio in ciò, se un servi zio viene visto come l’applicazione che deve subire
modifiche risulta molto facile per l’azienda che lo sviluppa cambiarne una sua parte e
reinserirlo nel contesto dell’architettura senza dover svilupparla di nuovo. Questi concetti si
inseriscono anche in un tema di mercato più flessibile dove si riconoscono fornitori dei
servizi e clienti che li “affittano”, senza ottenerne la proprietà ma con la capacità di
lanciarlo e quindi di utilizzarlo, pagandolo alla società produttrice se non si tratta di
software ‘open source’. Questa visuale si potrebbe espandere a tutto il mondo informatico
ma le motivazioni per cui questa tecnologia rimane per ora ristretta nell’ambito domotico
ed embedded sembrano essere sostanzialmente due, l’impossibilità di cambiare da un
momento all’altro tutto il modo di pensare e sviluppare software e la difficoltà d’inserire
un’architettura in un ambiente così vasto come potrebbe essere internet.
Oggi sono diverse le tecnologie nate e sviluppate come SOA ma sono due le principali che
hanno ottenuto una presenza più sostenuta sul mercato, Jini di SUN Microsystem e OSGi
Framework di OSGi entrambe sviluppate alla fine degli anni ’90.
I seguenti motivi portano però alla scelta della seconda possibilità architetturale. La prima
è che OSGi oggi ha preso maggiormente piede in ambito industriale mentre Jini sembra
rimanere più un’infrastruttura utilizzata in ambito accademico, che non riesce a sfondare
nel mercato. La seconda motivazione è che, ad una prima analisi, oltre a non fornire utili
strumenti per lo sviluppo aumentando notevolmente il lavoro di chi vuole implementare
applicazioni (anche se ciò comporta una libertà maggiore), Jini non permette di scendere
di livello per applicazioni come lo streaming che hanno bisogno di arrivare allo stadio fisico
per lo scambio di veri e propri pacchetti personalizzati alla trasmissione di questo tipo di
dati che potrebbero dipendere anche dalla rete stessa potendo utilizzare Wireless LAN o
Bluetooth.

Framework OSGi

L’Open Service Gateway initiative (OSGi) è un'organizzazione non-profit, nata nel 1999,
con sede in California (USA). Dalle iniziali 15 compagnie partecipanti, tra cui: Ericsson,
IBM, Nortel, Oracle, Philips, Sun, Motorola, Lucent, ecc… OSGi ha implementato una
specifica cioè un insieme di API per la gestione del ciclo di vita dei servizi, per la
risoluzione delle dipendenze, per la gestione dei dati, per la gestione dei dispositivi, per
regolare l’accesso ai servizi, per la gestione delle risorse e per la sicurezza del sistema.
Attraverso queste API, i clienti ricercano e usano i servizi desiderati, lasciando al sistema
                                                                                             8
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

tutti i problemi di gestione. In OSGi per utilizzare un servizio, ovvero un oggetto Java (va
ricordato che anche qui come in Jini ci si trova ad un livello superiore della JVM, perciò
l'implementazione è totalmente in Java assicurando la portabilità in ogni macchina
presente sul mercato), bisogna pubblicarlo registrando l'interfaccia e l’oggetto servizio
stesso, oltre al nome del servizio che lo descrive che sarà usato dai clienti come filtro per
rintracciarlo.
L'infrastruttura OSGi può essere utilizzata su qualsiasi piattaforma ed è applicabile a
qualsiasi ambiente computazionale; essa è in grado di ospitare, in una singola service
platform, più applicazioni provenienti da differenti service provider, che in essa hanno
installato i propri servizi, e che nell'architettura SOA sono gli agenti che forniscono i
servizi. In realtà emerge la problematica della registrazione di servizi remoti su un
framework centrale. Ciò non è ancora facilmente possibile e per questo si aggira il
problema installando proxy dei servizi sul framework client che comunicherà attraverso
RMI o altri protocolli di comunicazione ad oggetti remoti (es.: CORBA) con gli altri
framework server che mantengono lo stato e le proprietà del servizio vero e proprio.
Per lo sviluppo operativo di questo progetto si utilizzerà il prototipo di una seconda tesi, dal
titolo “OSGi: dalla piattaforma all’infrastruttura per servizi distribuiti in ambito domotico”,
che permetterà a frameworks distribuiti di comunicare tra loro per scambiarsi servizi.
I servizi possono addirittura usarsi tra loro, essi vengono riconosciuti dinamicamente dalle
applicazioni presenti sul framework, grazie a meta-servizi che esso offre. L'infrastruttura
fornisce un ambiente sicuro per i servizi, astraendo dal particolare protocollo di rete
utilizzato a livello inferiore con politiche di sicurezza basate su Java.
Il cuore di questa specifica è il framework; esso fornisce un ambiente di esecuzione Java
gestito, sicuro e “general purpose”, che supporta la distribuzione di servizi flessibili,
dinamici e scaricabili contenuti all’interno di Bundles ed eseguibili all’interno del
Framework. I bundles installati possono registrare il proprio servizio che viene condiviso
con gli altri presente sullo stesso framework. Di seguito si riporta l'architettura di OSGi
nella quale si può notare la sua completa portabilità.

                                                                                              9
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

    fig 1.1 Architettura di servizi basata sullo standard del Framework OSGi (struttura)

Il Framework stesso è un bundle “speciale” (system bundle) ove al suo interno possono
essere installati, disinstallati, sospesi o avviati tutti i bundle che forniscono o richiedono un
servizio. All'interno di questo ambiente è presente anche un "Service Registry" (Service
Repository per lo standard SOA) dove vengono registrati e ricercati i servizi, che deve
comunicare con qualsiasi componente per fornire e rendere disponibile a sua volta
qualunque servizio. Il framework che gestisce i servizi riconosce quelli registrati da terzi e
alcuni già definiti, di tipo speciale (meta -sevizi), in grado di salvare messaggi,
amministrare e gestire dipendenze e permessi; essi possono anche prelevare
informazioni, inviare comandi, valutare la configurazione e monitorare gli altri servizi. I
bundles possono essere considerati i service provider, le uniche entità in grado di
registrare, gestire e distribuire, all’interno del Framework, i servizi che possiedono. Un
bundle è costituito da classi Java e altre risorse, che, insieme, forniscono i componenti,
chiamati servizi, utilizzabili dagli utenti e da altri bundle. All’interno del framework essi
sono distribuiti sotto forma di Java ARchive (file JAR). Attraverso gli eventi, generati in
modo asincrono, il Framework comunica alle entità presenti il verificarsi di determinate
azioni. Il paradigma di sicurezza del Framework si basa sulle specifiche Java 2.

La Gestione in OSGi è meno flessibile ma già in parte indirizzata e definita
dall'architettura, garantendo maggior sicurezza e fornendo allo sviluppatore gli strumenti
(sotto forma di meta-servizi), ma non le politiche che devono esser risolte caso per caso,
per gestire l'applicazione.
Un implementazione di OSGi è fornita da Gatespace un azienda scandinava che
distribuisce le documentazioni delle proprie API java per lo sviluppo di bundle da registrare

                                                                                              10
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

nel proprio framework installabile su qualsiasi sistema operativo. Questa sarà la soluzione
implementativa adottata come di architettura di servizi.

OSGi in ambito domotico

Si vuole ora inquadrare come un’architettura di servizi può entrare in casa ed essere
applicata ai dispositivi che ogni giorno accompagnano la vita di chiunque. Innanzitutto va
specificato che si dovranno utilizzare dispositivi “intelligenti” ovvero in grado di supportare
un sistema operativo e una Java Virtual Machine. Infine oltre alla JVM essi dovranno
avere installato almeno una parte del Framework OSGi al fine di cooperare con gli altri per
lo scambio dei servizi (offerta e domanda). Risulta evidente che ogni dispositivo che
inseriamo in casa offrirà i propri servizi, mentre il framework visto come una struttura
generale che amalgama tutti i framework dei devices “girerà” in continuazione
permettendo l’entrata e l’uscita dal sistema di periferiche. Ipotizzando di aver in casa
almeno un server centrale sempre “on line” nella rete domestica, esso dovrebbe ospitare il
cuore di tutti i framework, quello che vive in continuazione e accetta l’inserimento di altri
frameworks nella casa (installati nei dispositivi stessi). In realtà con questa visuale si
ottiene che ogni servizio di ogni devices sta su un framework diverso, e ciò esula dalla
concezione originale di architettura di servizi; L’ideale sarebbe avere un unico Framework
installato nel server che permetta ai dispositivi di registrare sopra i propri servizi e renderli
disponibili agli altri, mantenendo comunque lo stato del servizio in locale sulla periferica.
Risulta difficile però immaginare come un servizio possa vivere su un device senza un
framework che lo sostenga. Una soluzione, che l’altra tesi precedentemente citata
propone, è     quella   di   generare   una    colla   fra   i   vari frameworks,   gestita   da
FrameworkServers centrali, che permetta di astrarre dal distaccamento fisico degli stessi,
dando allo sviluppatore l’impressione di avere un framework unico ma distribuito su tutte le
macchine. In questa tesi si astrarrà da qualsiasi concezione di infrastruttura immaginando
che non ci siano problemi di ricerca servizi e distribuzione fra frameworks e ipotizzando
che nella rete domestica esista un architettura capace di accettare e gestire qualsiasi
nuovo servizio, che entra a farne parte o ne esce, senza smettere di restare “accesa”.
Quindi se la casa dispone già di un’infrastruttura del genere, ogni qualvolta un nuovo
componente elettronico “intelligente” entra in casa può fornire i servizi che ha su di se
installati e iniziare fin da subito a comunicare con chiunque è già attivo nella rete. Facile
immaginare come un PDA (Personal Digital Assistent) possa essere il primo ad entrare in
casa come gestore e pilota degli altri dispositivi, capace di cercare servizi e pilotarli in
                                                                                              11
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

modo che altri possano comunicare, come l’accensione di un televisore su un canale per
l’acquisizione immagini da telecamere, che ricercherebbe il servizio fornito da quest’ultima
già presente in rete. In sostanza il problema risulta a chi dare il comando e la gestione dei
servizi; ciò verrà approfondito nel cap 2.

    fig 1.2 Sistema di comando dei dispositivi di una casa da parte di un dispositivo più
                     intelligente (PDA) immerso in un’architettura OSGi

Streaming Audio/Video

È fondamentale capire come può esserci video-comunicazione su dispositivi intelligenti
(intendendo qualunque macchina fornita di un sistema operativo, una JVM e un
Framework OSGi), e perché molto spesso si parla di streaming. Con l’avvento di Internet
impelle il bisogno di comunicare “vedendosi” e ciò avvenne in principio attraverso il web,
con del semplice scambio di file multimediali che chiunque poteva scaricare e visualizzare
(tramite un player) sulla propria macchina, anche se non si era più collegati in rete. Questo
però portava ad un enorme spreco di tempo. Considerando che i file multimediali hanno
enorme capacità in numero di byte, un navigatore correva il rischio di perdere molto tempo
per il downloading del video, per magari accorgersi al termine che non era ciò che cercava
o voleva. A meta degli anni ’90 nasce lo streaming, una tecnica con la quale visualizzare

                                                                                            12
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

in contemporanea al downloading del filmato che interessa, con la possibilità quindi di
scartarlo nel caso non sia quello giusto. Tramite lo streaming ciò che si cattura viene
compresso attraverso appositi codec e inviato in rete allo stesso modo, sia che la fonte sia
una telecamera (in questo caso ci sarà una continua cattura di immagini), sia che essa sia
un file (la fase di cattura è già terminata). L’utente che riceve lo streaming potrà
decodificarlo e iniziare subito la visualizzazione evitando un inutile appesantimento del
proprio hard disk con file di grosse dimensioni, dato che in seguito alla visualizzazione i
dati vengono eliminati . In ambito domotico la questione è pressoché indifferente se non
per il fatto che a
                 l rete non è più globale e perciò si prevede una maggior ampiezza di
banda con una conseguente riduzione del tasso di compressione dei filmati trasmessi e
quindi maggior qualità audio e video.
Oggi sul mercato in ambito di streaming fanno da padroni tre importanti imprese,
RealNetwork, Microsoft e Apple. Il più delle volte queste applicazioni generano dati non
compatibili tra loro, da ciò nasce la difficoltà di implementare uno standard unico da
seguire.

RealNetworks

RealNetworks è presente sul mercato dal 1995 e oggi migliaia di imprese utilizzano i suoi
prodotti per soluzioni di video-streaming su web. Famosa per RealPlayer e il susseguirsi
delle sue versioni si è posta come una delle maggiori potenze nel campo. Nonostante il
player rimanesse gratuito, tutte le applicazioni a lato server sono sempre state prezzate.
Da giugno 2002 la RealNetworks ha aperto un nuovo progetto con il nome di Helix,
indirizzato sempre allo sviluppo di streaming audio e video ma con la particolarità di
essere OpenSource e gratuito in qualsiasi suo componente e si appresta a fare forte
concorrenza a Microsoft che negli ultimi anni sembra aver avuto la meglio. Il server di
Helix supporta oggi fin a 55 tipi di file multimediali compresi quelli di Microsoft, QuickTime
gli innovativi MPEG4. Non ha alcun problema di sistema operativo perché la piattaforma
può benissimo girare su qualsiasi, da Windows a Linux. Per la sicurezza è indipendente
dal sistema su cui si trova perciò astrae dai problemi di una piattaforma insicura.

Microsoft

Microsoft fornisce il suo Windows Media Video in unione con il sistema operativo perciò ad
un primo sguardo può sembrare vantaggioso considerandolo gratuito, ma non lo è, causa

                                                                                           13
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

la licenza del sistema e un ulteriore costo da pagare per installare un server multimediale.
Un successivo problema risulta la gamma di tipi di file compatibili. I server salvano i filmati
in file AVI o ASF di proprietà Microsoft costringendo a volte l’utente ad avere anche il
player omonimo a lato client. La sicurezza deriva soprattutto dell’unico sistema operativo
sui cui si appoggia perciò anche se questo potrebbe sembrare uno svantaggio, ha dalla
sua l’immenso utilizzo di migliaia di clienti che se lo trovano già a disposizione con
l’acquisto di Windows.

Apple

Nato per sistemi operativi Apple ha avuto un enorme sviluppo il prodotto QuickTime che
oggi è arrivato alla sua sesta versione. Completamente gratuito e open source è la
risposta alla ricerca di uno standard per lo streaming audio e video. Può trasformare filmati
in file multimediali di tantissimi tipi fra cui l’MPEG-4 che ha scelto QuickTime come codec
standard per la codifica del suo genere. In ultima analisi si nota come si è cercato anche di
rendere compatibile il player con Internet Explorer creando appositi activeX che possono
essere visti con questo browser di enorme diffusione. Di grande interesse è anche come
oggi vengano fornite delle API per lo sviluppo in JAVA di applicazioni per lo streaming.

        Osservazione
        Risulta però fondamentale per riuscire a compiere streaming su un
        architettura OSGi avere API java per lo sviluppo (si ricorda che con
        l’implementazione di GateSpace i servizi sono costruiti in Java). Perciò ci si
        trova davanti alla scelta di scartare strumenti di video-comunicazione come
        Windows Media e RealVideo che non forniscono alcun tipo di API Java per
        lo sviluppo personale di applicazioni audio/video.

Resta valido QuickTime che con il package aggiuntivo fornisce API per permettere
d’inserire il player e quant’altro in applicazioni Java. Un’altra plausibile soluzione verrebbe
dalla SUN stessa con l’utilizzo di JMF (Java Media Framework, oggi alla versione 2.1), un
insieme di classi (API) per la cattura, la trasmissione e la visualizzazione/ascolto di formati
multimediali.

                                                                                            14
CAPITOLO 1: Problemi e tecnologie in ambito domotico multimediale  Buda Claudio
______________________________________________________________________________

JMF
Le API di questo framework estendono la piattaforma Java offrendo capacità avanzate di
processamento media, includendo la cattura, la compressione e la trasmissione per
importanti tipi di codecs come     MP3, Flash, Microsoft AVI format, MPEG-1 attraverso
Real-time Transport Protocol and Real-time Streaming Protocol (RTP/RTSP). Questa
tecnologia sopporta inoltre i tipi di file come quelli di QuickTime. In aggiunta queste API
includono un’architettura aperta che permette agli sviluppatori di accedere e manipolare i
vari componenti di visualizzazione e gestione video e cattura immagini come effetti tracce
e renders. Permettono anche di utilizzare personali componenti plug -in.

MMAPI
Oltre che JMF la Sun ha sviluppato anche un package addizionale MobileMediaAPI per la
piattaforma di devices d’informazione (utilizzato per la telefonia mobile e altri dispositivi
mobili come i pda), che svolge praticamente gli stessi compiti del precedente ma con una
maggiore leggerezza in fatto di dimensione del pacchetto, escludendo strumenti a volte
inutilizzati.

        Osservazione
        Per non doversi legare sin dal principio alla tecnologia si sceglie di
        continuare nell’analisi astraendo da essa, ipotizzando di utilizzarne una
        compatibile con JAVA e OSGi, che in sostanza si deciderà con la scelta a
        livello implementativo fra JMF e QuickTime.

                                                                                          15
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

CAPITOLO 2: Analisi

Obiettivo tesi a livello d’analisi.
L’obiettivo di questa tesi è quello di definire dei bundles standard per OSGi applicabili su
qualsiasi dispositivo Hi-Fi intelligente che permettano di farlo interagire in un infrastruttura
a servizi con altri componenti analoghi. Si dovrà perciò stabilire una gerarchia di interfacce
di servizi valida per dispositivi tali e un insieme di package che serviranno per lo streaming
Audio-Video utilizzando le API in Java messe a disposizione da tecnologie appropriate.
Ogni servizio pubblico sarà reso disponibile all’utente attraverso delle interfacce grafiche
debitamente costruite. Siccome l’evoluzione della tecnologia e del mercato sono continue
non si potrà costruire un sistema chiuso, anzi si deve tenere aperta qualsiasi soluzione
aggiuntiva perciò aspettarsi l’introduzione di nuovi dispositivi creando un ambiente
dinamico e aperto.

Gestione dei Servizi e del loro comando

Siccome la tesi è centrata nell’analisi di impianti Hi-Fi non verranno esaminati dispositivi
quali frigoriferi, forni, o condizionatori ma il concetto di gestione e comando dei dispositivi
può essere esportato anche a loro. Un ipotetico use case vedrebbe i seguenti quattro
operatori comunicare nell’intranet casalinga:
   -   un server che contiene il cuore del Framework e dove i servizi vengono
       registrati e monitorati,
   -   un palmare capace di interagire col server per identificare i servizi,
   -   un televisore che può acquisire immagini e suoni sia da antenna che da
       telecamere,
   -   una telecamera che acquisisce immagini e suoni usata ad esempio per
       funzioni di video-sorveglianza,
Si considera che palmare, televisore e telecamera abbiano registrato il loro servizio
(implementato dalla casa produttrice) nel server di casa. Questo servizio consiste nel
mettere a disposizione strumenti per potere essere utilizzati da qualsiasi attore del sistema
e inoltre di comunicare col framework per poter installare altri Bundle che contengono
servizi. Questo è un po’ il concetto di ogni Architettura dei Servizi dove si hanno Provider
che mettono a disposizione servizi e Client che li usano affittandoli ma non acquisendone

                                                                                             16
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

la proprietà. Entrando in dettaglio nel caso di streaming ci possono essere più visioni di
funzionamento di tale sistema.

Esempio Telecamera-Televisore gestibili da PDA
Dal palmare si riesce ad accedere al servizio televisore che fornisce puntualmente per i
pda (o qualsiasi altro dispositivo mobile) un servizio proxy (un specie di telecomando
capace di pilotare il vero servizio che sta sul televisore attraverso il protocollo RMI) dotato
di un’interfaccia grafica in grado di scegliere le funzionalità da richiamare (es. accensione
e spegnimento tv, cambiare canale e volume, etc…). C’è la possibilità da palmare anche
di visualizzare l’interfaccia del servizio telecamera con le sue operazioni (attiva e arresta
trasmissione flusso audio, attiva e arresta trasmissione flusso video, etc…).

                                                  RMI

  fig 2.1 Esempio di come il PDA può pilotare il Televisore attraverso il proxy del servizio

1° caso
A questo punto si potrebbe sintonizzare il televisore su un canale standard per la ricezione
dati dalla rete (precisamente dalle telecamere come ad esempio il canale AV) e attivare il
flusso di dati della telecamera nella rete. Avviene quindi in principio un handshake fra i due
dispositivi per localizzarsi e permettere la sincronizzazione dei dati. Ma se prima venisse
attivato il flusso della telecamera e poi il canale AV della televisione? A chi spetta pilotare

                                                                                            17
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

l’handshake? Se per la trasmissione di dati ogni dispositivo ha bisogno dell’indirizzo IP
dell’altro chi è il primo a fare la richiesta? È la telecamera che deve richiede quello del
televisore e settare il proprio alla tv o viceversa? Questi sono già due sottocasi.

2° caso
Da palmare, non si giunge ad avere nell’interfaccia della tv la possibilità di mettere su un
ipotetico canale AV, ma solamente azionando l’avvio del flusso della telecamera essa si
occuperà di reperire il servizio tv e utilizzare strumenti di cui è a conoscenza per eseguire
l’handshake e far visualizzare al televisore ciò che essa acquisisce.

3°caso
In contrapposizione al secondo caso non si hanno nell’interfaccia della telecamera tasti
per avviare la trasmissione dati, ma solo mettendo sul canale AV il televisore stesso si
occuperà di handshake e di far partire l’acquisizione e la trasmissione da parte della
telecamera attraverso le sue funzionalità già a conoscenza tramite interfacce standard.

4°caso
Non si dispone di un palmare ma semplicemente il televisore permette di visualizzare
l’interfaccia del suo servizio sullo schermo, e tramite un semplice telecomando, che
permetta di gestire un menu, si potrà proseguire in uno dei tre casi precedenti
visualizzando le interfacce di entrambi i dispositivi direttamente sul televisore.

5°caso
Invece che dalla postazione mobile o dal televisore i primi tre casi sono replicabili dal
computer che fa da server per l’architettura.

6°caso
Potrebbero esserci più televisori nella casa e più telecamere. Perciò decidere quale
telecamera deve acquisire e quale televisore deve riprodurre risulterebbe ancora più
complicato. Ad esempio, se ci sono due televisori e il flusso della telecamera viene
trasmesso, su quale televisore viene riprodotto? Su quello che ha posizionato il proprio
canale su AV? Su entrambi se si trovano tutti e due sul canale AV?

       Osservazione

                                                                                          18
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

       Se non risultasse possibile settare il canale AV come nel 2° caso come
       faccio a capire quale televisore vuole ricevere? Perciò risulta impossibile
       non dire al televisore di porsi su un canale apposito per la ricezione di
       segnale da telecamera.

7°caso
Se si disponesse di un tv e due telecamere? Non si potrebbe dare il comando alla tv una
volta selezionato il canale AV di ricevere streaming da telecamera, non saprebbe quale
telecamera attivare! La soluzione potrebbe essere fare un canale AV per ogni telecamera
ma come predeterminare il tetto massimo di telecamere che possono entrare a fare parte
di un sistema di sicurezza?

       Osservazione
       Anche per questo caso risulta impossibile non definire quale telecamera
       deve attivare il flusso per visualizzare i propri contenuti.

8°caso
E se si possedessero due telecamere e due televisori, attivando la trasmissioni
d’entrambe le telecamere cosa accadrebbe? Per questo si sente il bisogno impellente di
definire delle regole per la gestione del flusso di dati nella casa esaminando tutti possibili
casi dipendenti da chi si trova nelle rete domestica.

Altri casi
Si potrebbe andare avanti per molto nell’elenco dei casi, basti pensare alla possibilità di
visualizzare ciò che una telecamera acquisisce direttamente nel palmare piuttosto che in
un televisore, oppure pilotare il flusso di un microfono che non fa parte della famiglia delle
telecamere alle casse del televisore, etc…

Una soluzione ragionevole
Per poter dare una soluzione che comporti la massima flessibilità si deve pensare alla
massima disponibilità di dispositivi all’interno della casa. Ipotizziamo perciò un numero
illimitato di strumenti di categoria Hi-Fi (televisori, telecamere, VideoPlayer, microfoni,
impianti stereo) e di un numero illimitato di mobile devices (pda, smartphone, notebook;

                                                                                           19
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

ogni componente della famiglia potrebbe averne uno personalizzato per comandare il
sistema).
In questo agglomerato di dispositivi si pensa alla soluzione di una caso di vita familiare.

Use Case

La madre chiede al figlio maggiore (Giacomo) che si trova nel salotto a guardare la tv di
dare una controllata al fratellino (Mattia) che gioca col cane in giardino e comunicargli che
il pranzo è pronto, e aspettarsi una conferma da quest’ultimo. Per fare ciò sicuramente
Giacomo sa che nella casa oltre al televisore in salotto con un eventuale microfono a
portata di mano, risiedente ad esempio nel pda molto evoluto, si ha una telecamera che
da sul giardino prevista di microfono e mini casse. Siccome Mattia ha dimenticato il suo
pda in casa, Giacomo dovrà comunicare tramite la telecamera in giardino. In
contemporanea il fratello di mezzo (Nicola) vuole visualizzare da camera sua come
procede l’esperimento in cantina che il professore di chimica gli ha chiesto di fare a casa.

             fig 2.2 Dispositivi presenti in un ipotetico use case di vita familiare

SOLUZIONE USE CASE
Giacomo, che prima stava guardandosi un film da dvd di vecchia generazione perciò
connesso al televisore tramite cavo SCART decide per prima cosa di visualizzare cosa fa
il fratello. Per fare ciò potrebbe semplicemente vederlo direttamente sul pda che ha in

                                                                                              20
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

mano tramite la funzione “visualizza da dispositivo” che il servizio della telecamera in
giardino mette a disposizione attraverso la sua interfaccia (ipotizzando che il proxy del
servizio telecamera ne abbia una). Per cui selezionando l’interfaccia della telecamera
giardino, il pda chiede alla telecamera l’indirizzo, se non ne è già a conoscenza, si mette in
ricezione e richiama l’operazione trasmetti_su_dispositivo indicando l’indirizzo del
dispositivo sul quale si vuole visualizzare. Siccome però Giacomo vuole vedere bene cosa
Mattia sta combinando preferisce visualizzarlo sullo schermo della Tv. In questo caso sul
pda decide di visualizzare l’interfaccia televisore. Da un ipotetico menu di quest’ultima si
potrà scegliere da quale telecamera presente nella casa si desidera visualizzare lo
streaming.

      Osservazione
      Come fa l’interfaccia grafica del televisore a sapere quali telecamere sono in
      casa? Si potrebbe stabilire che ogni qualvolta venga aperta l’interfaccia di
      un dispositivo di visualizzazione o ascolto, essa faccia un controllo su
      Framework dei dispositivi di acquisizione presenti nella casa. O ancora
      meglio quando un dispositivo di acquisizione entra in casa, venga lanciato
      un evento che sollecita tutte le interfacce grafiche ad aggiornarsi, stando in
      ascolto di questo tipo di eventi, così da avere un cambiamento real-time
      dell’interfaccia, con l’aggiunta di nuove fonti.

          fig 2.3 Controllo del servizio Tv attraverso il PDA che utilizza il Proxy Tv
                                                                                           21
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

Scegliendo la telecamera del giardino è il servizio televisore che si mette in ricezione della
telecamera selezionata, di cui saprà già l’indirizzo avendola scelta dal menu, e lancia lo
strumento del servizio telecamera_giardino che farà trasmettere su un dispositivo del
quale si conosce l’indirizzo passatogli dalla destinazione che ha il controllo.

fig 2.4 Il servizio TV si mette in ricezione dei dati della telecamera dopo aver effettuato una
                                         connessione

      Osservazione
      Come fa il comando a passare dal pda al televisore? Se l’interfaccia di
      scelta dispositivi trasmissione/ricezione era quella del proxy del servizio TV
      automaticamente esso poteva dialogare con il televisore stesso che può
      attivare un canale di ricezione conoscendo già la telecamera in questione e
      le sue operazioni possibili. Il problema sarà a livello progettuale nel
      richiamare queste operazioni.

In contemporanea Nicola fa la stessa cosa in camera sua visualizzando nel televisore di
camera l’audio e video della telecamera della cantina.

      Osservazione
      Ma se Nicola avesse voluto vedere anche lui in giardino? Allora si sarebbe
      dovuta creare un sessione multicast, ovvero la telecamera avrebbe dovuto
                                                                                            22
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

      aprire in principio una sessione diversa dove il flusso di dati non confluiva su
      un unico indirizzo ma a più. Perciò non si può parlare di un’operazione
      trasmetti_su_dispositivo_unico perché in seguito altri televisori avrebbero
      potuto voler vedere. Quindi o si creano nuove sessioni ad ogni coppia
      source-sink (sorgente -destinazione) oppure si attivano sessioni multicast. Si
      definirà in seguito la scelta dopo uno studio di cosa le tecnologie mettono a
      disposizione.

  fig 2.5 È stata aperta una sessione multicast per trasmettere a più ricevitori della casa

      Osservazione
      Ma perché si preferisce dare il comando al dispositivo sink anziché a chi
      trasmette? Dal palmare si sarebbe potuto visualizzare un menu a tendina
      fornito dall’interfaccia della telecamera, per visualizzare su un determinato
      tv. A questo livello non è ancora chiaro a chi dare il comando ma soprattutto
      se attivare prima trasmissione o ricezione. Dipenderà dal protocollo che si
      andrà ad usare per questo prima di negare qualsiasi soluzione si preferisce
      continuare nell’analisi prendendo però ora per buona la scelta di pilotare la
      telecamera direttamente dalla destinazione.

In realtà Nicola si accontenta di visualizzare come procede il suo esperimento utilizzando il
suo PDA proprio come Giacomo.

                                                                                              23
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

 fig 2.6 Come in precedenza, la televisione visualizza dopo essere stata pilotata dal PDA

Ora Giacomo vede Mattia e vuole comunicargli che è pronto il pranzo. Per lo stesso
ragionamento seleziona la destinazione, ovvero le mini-casse della telecamera in giardino
e tramite il suo menu a tendina sceglie la fonte, che sarà il pda di se stesso (munito di un
microfono). Ancora una volta attraverso il PDA svolge un azione di controllo verso gli altri
dispositivi disponendo di un Proxy del loro servizio prelevato dal framework. Una volta
stabilita la connessione Mattia avviserà il fratello che sta arrivando, utilizzando la
precedente connessione televisore_salotto e camera_giardino ancora attiva.

                                                                                         24
CAPITOLO 2: Analisi                                                 Buda Claudio
______________________________________________________________________________

fig 2.7 In questo caso il PDA sceglie se stesso come dispositivo di trasmissione audio e la
                                telecamera come destinazione

A questo punto Giacomo chiude entrambe le connessioni.

      Osservazione
      Può Giacomo chiudere la connessione tv-telecamera solamente cambiando
      canale della tv? Sembrerebbe la cosa più logica e in effetti una prima
      soluzione sarà proprio quella ma ciò indurrebbe a non potere visualizzare
      due telecamere su uno stesso televisore se l’unico modo per chiudere una
      connessione fosse effettivamente cambiare canale TV. Questi temi
      verranno affrontati in seguito dopo uno studio della tecnologia soprattutto di
      banda per la trasmissione di questo tipo di dati.

Approfondimento sui servizi ‘dispositivo’

Si vogliono ora evidenziare quali saranno i caratteri più generali e quali più particolari. Per
generale si può intendere un’architettura che accomuni tutti i servizi per Hi-Fi che si
desiderano standardizzare. Ricordiamo quali sono i dispositivi di cui si vuole fornire servizi:
   1. PDA, SmartPhone, o Notebook
   2. Televisore
   3. Telecamera (compresa di microfono e casse)
   4. Microfono
   5. Impianto Stereo (compreso di casse ed apparati di acquisizione)

Ma quali sono le caratteristiche che accomunano servizi di dispositivi tali?
   1. Tutti avranno uno stato interno:
          a. Non alimentato perciò pure spento
          b. Il dispositivo può essere alimentato ma spento
          c. Alimentato e acceso ma non correttamente funzionante
          d. Acceso e correttamente funzionante
   2. Tutti avranno casse al di fuori del microfono…
          a. Perciò si potrebbe pensare a disassemblare le parti dei dispositivi
                   i. Schermo
                  ii. Cattura video
                                                                                            25
Puoi anche leggere