我正在尝试从通过USB连接的网络摄像头捕获视频,但是由于某些原因,FMJ无法加载或找到注册表文件。当我尝试运行程序时,每次调用FMJ函数都会产生警告:

[time] net.sf.fmj.utility.Registry <init>
WARNING: Problem loading JMF registry: org/jdom/JDOMException. Using Defaults


因此,它无法识别网络摄像头,并且程序失败。
相同的程序可以与JMF一起使用,但是为了使其跨平台,我正在迁移代码。我已经卸载了JMF,但是我不明白为什么它试图加载JMF注册表。运行fmjregistry.bat时,我还会收到以下错误:

FINE: PlugInUtility: Unable to register plugin net.sf.fmj.ffmpeg_java
FINE: PlugInUtility: Unable to register plugin net.sf.fmj.theora_java.NativeOggParser
FINE: PlugInUtility: Unable to register plugin com.omnividea.media.parser.video.Parser
FINE: PlugInUtility: Unable to register plugin com.omnividea.media.codec.video.NativeDecoder
FINE: PlugInUtility: Unable to register plugin com.omnividea.media.codec.video.JavaDecoder


以上都是java.lang.ClassNotFoundException

请帮忙,带Java的视频令人头疼

最佳答案

这个问题可能有点老了,但是对于那些面临相同问题的人(如我),这就是答案。

FMJ要求将JDOM(而不是JDOM2)包含在类路径中,因为它使用它来读取

C:\Documents And Settings\[user]\.fmj.registry.xml


该文件包含来自FMJ注册表的设置。 JDOM jar位于您从其主页下载的FMJ包的libs目录中。您可以复制它并将其包含在您的项目构建路径中,或者如果您是Maven用户,则可以添加依赖项:

<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.1.3</version>
</dependency>


不要忘记添加其他必需的库;]

如果不是这种情况,那么还有其他可能的选择:


您的程序没有读取此文件的权限,或者
此文件内容的XML语法格式错误(错误的XML)-在这种情况下,要查找XML代码中的错误,您可以使用在线提供的免费XML验证器之一对其进行验证

10-02 14:27