2014-02-28 28 views
-1

對於使用java和jmf從網頁捕捉實況視頻,我編寫了下面的代碼,我插入了usb攝像頭,並且安裝了java mediaframewrok最新和更新的版本。 complie程序沒有錯誤,但是當我運行程序我有一些像這樣的錯誤....在java中使用java媒體框架進行視頻錄製會引發異常

Exception in thread "VFW Request Thread" java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path at com.sun.media.JMFSecurityManager.loadLibrary(JMFSecurityManager.java: 
206) 
     at com.sun.media.protocol.vfw.VFWCapture.<clinit>(VFWCapture.java:19) 
     at com.sun.media.protocol.vfw.VFWSourceStream.doConnect(VFWSourceStream. 
java:241) 
     at com.sun.media.protocol.vfw.VFWSourceStream.run(VFWSourceStream.java:7 
63) 
     at java.lang.Thread.run(Thread.java:724) 
+0

它是Windows,Linux或OS X?你檢查了'jmvfw'庫的路徑嗎? – 2014-02-28 10:31:54

+0

它是Windows,我已經在環境變量 –

+2

中的類路徑中插入jmf所有庫的路徑你檢查過這個庫在你的路徑(屬性「java.library.path」)嗎? – 2014-02-28 11:13:10

回答

0

您應該加載這樣的庫(如果它已經加載可以檢查庫路徑。 ):

public class Test { 

     static { 
     try { 
      System.load("C:/PATH_TO/jmvfw.dll"); 
      System.out.println(String.format("%s has been successfully loaded","jmvfw")); 
     } catch (UnsatisfiedLinkError e) { 
      System.err.println("Native code library jmvfw failed to load." , e); 
      System.exit(1); 
     } 
     } 
     //check if the lib is in java.library.path 
     public static void main(String argv[]) { 
     String libs = System.getProperty("java.library.path"); 
     for (String lib : libs.split(";")) 
      System.out.println(lib); 

     } 
    } 

更新

錯誤:

C:\jmvfw.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform 

意味着你的DLL是32位的。您必須重新編譯(或下載)64位的DLL。另一種選擇是切換到32位JVM,或者獲得一些32位進程來代表您加載DLL並與該進程通信(有點複雜)。

+0

它顯示此錯誤... java.lang.UnsatisfiedLinkError:C:\ jmvfw.dll:無法加載IA 32位.dll在AMD 64位平臺 –

+0

您的DLL是32位,您必須重新編譯(或下載)64位的DLL。您可以切換到32位JVM,或者以其他方式獲得一些32位進程來代表您加載「DLL」,並以某種方式與該進程進行通信。 – 2014-02-28 11:42:10