author: Giulio De Meo JMF - JAVA MEDIA FRAMEWORK JMF è un

JMF - JAVA MEDIA FRAMEWORK
JMF è un insieme di API che fornisce gli strumenti per la realizzazione di oggetti multimediali in
Java , per la riproduzione audio e video. I suoi elementi principali sono:
Il Data Source rappresenta l’input del player: si crea a partire da oggetti tipo Url o MedialLocator e
gestisce oggetti di tipo SourceStream
Il Capture Device permette di acquisire il flusso di dati. Innanzitutto bisogna interrogare
CaptureDeviceManager per localizzare il dispositivo. Si ottiene un CaptureDeviceInfo per fornire le
info necessarie al riconoscimento del dispositivo ed un MediaLocator() dal CaptureDeviceInfo per
creare un DataSource . A partire da quel Datasource infine si crea il Player.
Il Player riceve un input stream e lo manda in output senza effettuare alcun controllo sulle
operazioni che esegue prima di inviare i dati.
Il Processor (che insieme al Player costituisce i Controllers) è un player avanzato (Processor
extends Player); ha 2 stati (Configuring e Configured) in più del Player che gli permettono di fare il
Multi/Demultiplexing automatico di un input stream contenente più tracce, o codificare/decodificare
una traccia.
DataSink è usato essenzialmente per inviare il flusso di dati (media stream) verso un file-writer.
Format rappresenta il fomato in cui sono stati memorizzati i dati multimediali (encoding usato).
Un JMF Manager è una specie di robot che realizza implementazioni di interfacce chiave(quali
Player, Processor, ma anche registri di codec o plug-in disponibili) che possono essere usate con
le altri classi senza creare conflitti! I JMF Manager sono 4:
– Manager : gestisce la costruzione di Players, Processors, DataSources e DataSinks
– PackageManager : crea e tiene aggiornato un registro dei package che contengono classi JMF
– CaptureDeviceManager : crea e tiene aggiornato un registro degli dispositivi di cattura audio
video disponibili
– PlugInManager : crea e tiene aggiornato un registro di JMF componenti di tipo plug-in
disponibili per un processor.
author: Giulio De Meo
L’ applicazione “ MultiMediaPlayer.java ”
La versione delle API che ho utilizzato per la creazione del player multimediale, è la JMF 2.1 che
permette di riprodurre suoni nei formati MP3, WAV, AU,e MIDI e video nei formati MPEG1,MPEG-2, Quicktime ed AVI.
MultiMediaPlayer.java realizza un player multimediale in grado di leggere un determinato file
audio o video e riprodurlo in maniera appropriata . Se il file è di tipo audio, e se nella sua stessa
cartella è presente il testo della canzone, selezionando la voce “Testo” dal menu “File” è possibile
leggere il testo della canzone in una finestra video.
Dal file letto, si ottiene l'URL che ci permette di creare il player. Per ottenere un player da un
oggetto URL basta utilizzare la seguente istruzione:
Player player=Manager.createPlayer(url);
Esiste, infatti, la classe Manager che, attraverso i suoi metodi static, che permette la creazione del
player a partire dal suo URL (nel caso specifico si usa il metodo createPlayer()). A questo punto il
manager esamina l'URL e crea il player opportuno. Successivamente il metodo realize() procede
alla fase di Realizing. La generazione di un evento di tipo RealizeCompleteEvent, ci dice che la
fase di Realizing è terminata e che il player è nello stato di Realized. Esso si è "reso conto" di
quello che deve fare e attende che gli venga dato il via per procedere. Ovviamente, per sentire
l'evento, bisogna registrarsi ad esso attraverso una istruzione del tipo
player.addControllerListener(this);
Attraverso l'implementazione della precedente interfaccia è possibile controllare lo stato del player
in ogni istante attraverso l'ascolto di numerosi eventi che rappresentano la maggior parte delle
classi del package java.media. Bisogna cioè definire il metodo
public synchronized void controllerUpdate(ControllerEvent ce)
esaminando l'oggetto ControllerEvent passato come parametro.
Un volta nello stato Realized, notificato dal fatto che è stato generato un evento del tipo
realizeCompleteEvent, si possono prelevare quelli che saranno i componenti caratteristici il media,
utilizzando due particolari metodi dell'interfaccia Player:
* getVisualComponent() : per ottenere il visual-component
* getControlPanelComponent(): per ottenere il Panel con gli strumenti di controllo del flusso del
player.
Gli oggetti ritornati dai metodi precedenti sono oggetti Component da inserire nel nostro Frame
principale utilizzando un layout di Java, nel nostro caso il BorderLayout. Si pone il VisualComponent a "Center" ed il Control-Panel a "South". A questo punto il lettore multimediale si può
considerare concluso. Abbiamo dotato la piccola application anche delle normali funzioni di
caricamento. L’opzione chiusura permette il rilascio delle risorse. .
2
author: Giulio De Meo
L’interfaccia grafica del MultiMedia Player durante la riproduzione di un file mp3 è in fig1.:
N.B. Affinchè sia possibile utilizzare l’applicazione “PLAYER”, è necessario installare sul proprio
computer i seguenti file dal sito SUN
http://java.sun.com/j2se/1.5.0/download.jsp;
- JRE 1.5 ;
- jmf 2.1 .
il file zippato jmf-2_0-spec contiene la documentazione delle API jmf., quindi non è necessario
alla corretta esecuzione del player.
3