原文地址:http://blog.csdn.net/zajin/article/details/9288239
本人菜鳥級人物,由於要搞個Face Service登入(JAVACV),百度Google了一下午,找了網上簡單的範例代碼來試,可是老是調試不過,出現CaptureDeviceManager.getDevice 為空白指標。鬱悶了一下午。現在終於搞出來了。特此紀念一下,因為在網上找了大半天,發現這方面的介紹不是很多,因此也希望能為後來的學習者有所協助,少走些彎路。
功能:實現網路攝影機調用
步驟:1、到sun下載JMF,並且安裝,安裝後需重啟電腦。下載連結http://www.oracle.com/technetwork/java/javase/download-142937.html
2、建立設定JMF的環境變數,"電腦"->"系統屬性"->"進階環境設定"->"進階"->"環境變數"
變數名:"JMFHOME" 變數值:"C:\Program Files\JMF2.1.1e"
變數名:"CLASSPATH" 變數值:";%JMFHOME%\lib\jmf.jar;%JMFHOME%\lib\sound.jar"
如圖:
3、開啟安裝好了的JMF,在C:\Program Files\JMF2.1.1e\bin目錄下開啟“jmfregistry.exe”,選擇“Capture Devices” 然後按左下角“Detect Capture Devices”按鈕,多按幾次,直到左側邊欄中出現“ vfw:Microsoft WDM Image Capture (Win32):0” ,則說明JMF已經註冊了網路攝影機,到此就可以關閉了。
如圖:
4、現在可以用Eclipse 編程了。建立一個工程,把下面範例代碼複製進去,在該工程點擊右鍵選擇Build Path ->Configure Build Path... ->Libraries ->Add External JARs... 然後把安裝的JMF裡面\lib目錄下的幾個Jar包匯入進來。
如圖:
5、運行即可。
[java] view plain copy import java.awt.BorderLayout; import java.awt.Component; import javax.media.CaptureDeviceInfo; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; import javax.media.cdm.CaptureDeviceManager; import javax.swing.JFrame; import javax.swing.JPanel; public class Test extends JFrame{ public static Player player = null; private CaptureDeviceInfo deviceInfo = null; private MediaLocator mediaLocator = null; private Component component = null; private JPanel vedioPanel = null; String str1 = "vfw:Logitech USB Video Camera:0"; //擷取USB網路攝影機的字串 String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; //擷取本地網路攝影機的字串 // Creates a new instance of CameraTest public Test() { init(); } public void init(){ deviceInfo = CaptureDeviceManager.getDevice(str2); //根據字串擷取採集裝置(網路攝影機)的引用 // System.out.println(deviceInfo); //顯示採集裝置(網路攝影機)的資訊 // System.out.println(deviceInfo.getName()); //顯示採集裝置(網路攝影機)的裝置名稱 mediaLocator = deviceInfo.getLocator(); //擷取採集裝置的定位器的引用,需要根據此引用來建立視頻播放器 &nbs