Ciao,
devo sviluppare una applicazione che:
1) gestisce una webcam su pc/notebook
2) riprende in continuazione i dati dalla webcam e li analizza
3) a seconda che i dati siano o meno coerenti con uno schema effettua delle operazioni
al momento mi sto concentrando sui punti 1 e 2 perchè è la prima volta che mi avvicino al Java Media Framework; però sto incontrando delle difficoltà.
In particolare ho installato una webcam sul mio pc e funziona; fin qui tutto ok. Quando però con JMF cerco di ottenere l'elenco dei device collegati al computer questa non compare.
Ad esempio col semplice codice:
che dovrebbe darmi la lista delle periferiche di acquisizione (audio/video) presenti mi compaiono:codice:Vector deviceList = CaptureDeviceManager.getDeviceList(null);
ma non la webcam...di conseguenza non posso procedere con del codice tipo (ometto un po di cose e do per assodato che l'elemento "i" sia quello che mi interessa):DirectSoundCapture
JavaSound audio capture
però se faccio direttamente (ipotizzando che la webcam sia la prima periferica):codice:Vector deviceList = CaptureDeviceManager.getDeviceList(null); CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) deviceList.elementAt(i); MediaLocator locator = deviceInfo.getLocator(); Player player = Manager.createRealizedPlayer(locator); player.start();
funziona, mi apre la webcam e (con altro codice) riesco ad istanziare un JFrame che mi visualizza l'output della webcam.codice:MediaLocator locator = new MediaLocator("vfw://0"); Player player = Manager.createRealizedPlayer(locator); player.start();
Quello che vorrei capire è:
1) come faccio a farlo funzionare come si deve con "getDeviceList()"?
2) per ottenere il flusso in ingresso dalla webcam devo usare un "Processor" giusto? (ed il suo getDataOutput(); ma questo getDataOutput() mi da i dati letti da webcam?)
poi avrei altre domande sul Processor e su getDataOutput() ma già risolvere questi problemi sarebbe ottimo....
qualcuno sa aiutarmi o almeno indirizzarmi verso della documentazione che mi apra la strada ad una soluzione?

Rispondi quotando