Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - webcam in java
Forum - Java - webcam in java

Avatar
HyBriiD (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/05/2011

Segnala al moderatore
Postato alle 23:20
Venerdì, 30/09/2011
ciao ragazzi, sto sbattendo la testa su questo problema da settimane ma non riesco a venirne a capo. in pratica vorrei visualizzare il flusso video proveniente dalla mia webcam, il problema è che a quanto pare la jmf non funziona correttamente e mi da dei problemi. ho windows 7 ed ho installato jmfstudio ma non capisco perchè la webcam in quel programma riesca a pescarla e a visualizzarla mentre se provo una semplice istanza del metodo start della classe Player dopo aver dovutamente effettuato le operazioni di settaggio del medialocator mi dia un NullPointerException!!!:grr: il fatto è che ho cercato dovunque, qualsiasi post nei forum inglesi che presentasse il mio problema, qualsiasi libreria alternativa da morena a jgrabber a timcam, JMyron...non funziona NULLA ed ancor peggio la configurazione di queste librerie è una operazione ardua.

ma cambiamo Eccezione ma  non il problema, ho preso un tutorial da internet dove ancor prima di start(), il problema si presta ad un altro oggetto precisamente nell'istanza dell'oggetto di classe DataSource ds

l'errore è il seguente
java.net.MalformedURLException: unknown protocol: vfw

ho windows 7 64 bit.. può essere la causa dei miei problemi?

vi posto il seguente codice:

Codice sorgente - presumibilmente Java

  1. import java.awt.BorderLayout;
  2. import javax.media.*;
  3. import javax.media.protocol.*;
  4. import javax.swing.*;
  5. import java.awt.*;
  6. import java.util.*;
  7. import javax.media.control.FormatControl;
  8. import javax.media.format.VideoFormat;
  9.  
  10.  
  11.  
  12. public class test {
  13.        
  14.         public static void main(String[] args){
  15.                 test t = new test();
  16.                 t.getCam();
  17.         }
  18.        
  19.         public void getCam(){
  20.         try{
  21.  
  22.                 /* Grab the default web cam*/
  23.                 MediaLocator ml = new MediaLocator("vfw://0");
  24.  
  25.                 /* Create my data source */
  26.                 DataSource ds = Manager.createDataSource(ml);
  27.  
  28.                 requestFormatResolution(ds);
  29.  
  30.                 /* Create & start my player */
  31.                 Player p = Manager.createRealizedPlayer(ds);
  32.  
  33.                 p.start();
  34.                
  35.                 Thread.currentThread().sleep(1000);
  36.  
  37.                 /* code for creating a JFrame and adding the visual component to it */
  38.                 JFrame jfrm=new JFrame("Testing Webcam");
  39.                                 jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  40.                                 if(p.getVisualComponent()!=null)jfrm.getContentPane().add(p.getVisualComponent());
  41.                                 if(p.getControlPanelComponent()!=null)jfrm.getContentPane().add
  42.                                                 (p.getControlPanelComponent(),BorderLayout.SOUTH);
  43.                                 jfrm.pack();
  44.                                 jfrm.setLocationRelativeTo(null);
  45.                                 jfrm.setVisible(true);
  46.                                 jfrm.setSize(320,240);
  47.  
  48.                                
  49.                 }catch(Exception e){
  50.                 e.printStackTrace();             
  51.                 }
  52.         }  
  53.        
  54.        
  55.                
  56.         public boolean requestFormatResolution(DataSource ds) {
  57.  
  58.                 if (ds instanceof CaptureDevice) {
  59.                         FormatControl[] fcs = ((CaptureDevice) ds).getFormatControls();
  60.                         for (FormatControl fc : fcs) {
  61.                                 Format[] formats = ((FormatControl) fc).getSupportedFormats();
  62.                                 for (Format format : formats) {
  63.                                         if ((format instanceof VideoFormat) &&
  64.                                                 (((VideoFormat)format).getSize().getHeight() <= 240) &&
  65.                                                 (((VideoFormat)format).getSize().getWidth()  <= 320)) {
  66.                                                         ((FormatControl) fc).setFormat(format);
  67.                                                         return true;
  68.                                         }
  69.                                 }
  70.                         }
  71.                 }
  72.                 return false;
  73.         }
  74.        
  75.        
  76.  
  77. }




Ultima modifica effettuata da HyBriiD il 30/09/2011 alle 23:22
PM Quote