本來就是想在自己寫的java里面加入實習的攝像頭監控,然后個各種百度了一下,就用JMF來弄了,不過這個東西貌似比較舊,網上的資料雖然說有,但是也不是太多,並且遇到的一下問題也不能解決,總之經過了一天的百度,終於搞定了,其實最大的問題就是安裝和設置這方面。
首先就是下載,csdn也有得下載,不過覺得要積分的不太好,畢竟oracle官網有得下:http://www.oracle.com/technetwork/java/javase/download-142937.html 然后就是安裝了,這里我之前百度過說安裝在java sdk1.6文件夾下,然后我就這樣處理了,但是似乎沒有成功,雖然用jmstudio能夠進行攝像頭監控,但是Eclipse的測試代碼就沒有成功,都是NullPointerException ,百度了很久都沒有成功,差點想放棄了!
然后我就將JMF卸載了,然后重裝,這次根據百度上說,我直接裝在c/jmf.2.1e這里,這是第n次裝也遇到了些問題
這個點了安裝包都有的應該,我就點yes to all ,然后沒有任何反應,后台進程還是有的,所以沒辦法直接重啟后就可以了,安裝成功!
安裝之后可以打開JMStudio試試能不能成功,一般都可以,然后打開JMF Registry弄一下這個是用來檢查本地的硬件信息的攝像頭和音頻。

安裝了之后,還有配置環境變量:JMFHOME=C:\jmf2.1.1e 和 CLASSPATH=%JMFHOME%\lib; 這樣就行了
Eclipse中將%JMFHOME%\lib下的jar全部加入到項目的classpath之中就可以了,然后我測試了一下也·成功了,下面是截圖

附上測試代碼:
import java.awt.BorderLayout; import java.awt.Component; import java.io.IOException; import javax.media.CannotRealizeException; import javax.media.CaptureDeviceInfo; import javax.media.CaptureDeviceManager; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoPlayerException; import javax.media.Player; import javax.swing.JFrame; public class camera_test extends JFrame{ public camera_test(){ this.setTitle("MyCapture"); this.setBounds(500,100,800,500); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void start(){ String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; CaptureDeviceInfo di = null; MediaLocator ml = null; Player player=null; di=CaptureDeviceManager.getDevice(str2); ml = di.getLocator(); System.out.println(di); System.out.println(ml); try { player=Manager.createRealizedPlayer(ml); } catch (NoPlayerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CannotRealizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(player!=null) player.start(); Component comp = null; if((comp=player.getVisualComponent())!=null) add(comp,BorderLayout.CENTER); } public static void main(String[] args){ camera_test mc = new camera_test(); mc.start(); System.out.println("sss"); } }
