2011-09-14 68 views
4

在UI方面表示身邊,我不得不做出2的小程序將在像服務器TOMCAT運行,當我在訪問該網頁[HTML頁面]客戶端,我有2個攝像頭附加到客戶端PC,我想展示在同一時間在客戶端2網頁來自兩個相機的視頻。捕獲來自多個USB攝像頭視頻,並使用JAVA + Java小程序

我試過使用JMF。輸出是

  1. 它不適用於大多數機器的兩個攝像機同時工作。它適用於一次捕獲一個相機

  2. 它適用於某些機器,但每次打開網頁時都必須選擇相機。第一個小應用程序選擇攝像機1,第二個小應用程序選擇攝像機2。

是否與/一種無需JMF,我可以一個客戶端PC上打開網頁2與2條小程序的相同的運行在遠程服務器上,並顯示每個頁面上的每個USBCAM的視頻?

我在使用JMF時使用了這個。

private void StartStreaming() 
    { 
     String mediaFile = "vfw:Micrsoft WDM Image Capture (Win32):0"; 
      try 
      { 
       MediaLocator mlr = new MediaLocator(mediaFile); 
       _player = Manager.createRealizedPlayer(mlr); 

       if (_player.getVisualComponent() != null) 
       { 
        setSize(480, 320); 
        jpnVideoStream.add("South", _player.getVisualComponent()); 
       } 
      } 
      catch (Exception e) 
      { 
       System.err.println("Got exception " + e); 
      } 
      _player.start(); 
    } 

這就是我的兩個小程序中存在的東西。但正如我所說的,大多數情況下,它會啓動一個CAM,然後使設備處於使用狀態,並且無法捕獲消息。

請提出任何解決方案。

回答

0

如果我沒有記錯,那麼在您的代碼(JMF實現)中,應該有java設備(資源)的列表/數組嘗試從中讀取數據(網絡攝像頭流)。我的猜測是,你需要改變代碼的方式,如果資源一忙,然後嘗試從資源二讀取。從本質上講,你要查看整個資源列表,試圖讀取任何可用的資源。

希望有所幫助。

1

正常工作的問題是,你要使用相同的網絡攝像頭在兩個小程序。

而是使用:

String mediaFile = "webcam 1" in applet 1 
String mediaFile = "webcam 2" in applet 2 

你的第一個攝像頭是:VFW:項目建立在微軟WDM圖像捕捉的(Win32):使用JMStudio的:0

您可以通過檢查你的第二個攝像頭。 選擇文件 - >首選項 - >捕獲設備,然後點擊檢測捕獲設備。

這也可以使用代碼完成,但上面的代碼更簡單。不過我米上市代碼:

Vector list = CaptureDeviceManager.getDeviceList(null); 
int i; 
CaptureDeviceInfo tempDevice; 

    // List all the devices ... 
    if(list!=null) { 

     if(list.size() == 0) 
     { 
      System.out.println("the device list is zero : "); 
      System.exit(1); 
     } 

     System.out.println("The devices are : "); 

     for(i=0;i< list.size() ;i++) { 
      tempDevice = (CaptureDeviceInfo) list.elementAt(i); 
      System.out.println(tempDevice.getName()); 
     } 
    } 

注:嘗試運行代碼,管理員如果dosent工作。

相關問題