为了使用java和jmf从网上捕获实时视频我已经编写了以下代码,我插入了usb网络摄像头,我已经安装了java mediaframewrok最新版本和更新版本。当我编译程序时没有错误但是我运行时程序我得到了一些这样的错误......
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 :(得分: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并与该进程通信(有点复杂)。